Pause javascript promesse de la chaîne de façon propre

Je suis en train de la chaîne de promesses, de sorte que la chaîne se casse si une promesse est rejetée. J'ai suivi les fils d'un DONC, la question précédente et a essayé de l'appliquer à natif de promesses, mais je pense que je suis l'incompréhension de la façon dont les choses fonctionnent.

Voici comment j'ai réécrit le code:

Promise.resolve()
    .then(function() {
        return step(1)
            .then(null, function() {
                stepError(1);
            });
    })
    .then(function() {
        return step(2)
            .then(null, function() {
                stepError(2);
            });
    })
    .then(function() {
        return step(3)
            .then(null, function() {
                stepError(3);
            });
    });

function step(n) {
    console.log('Step '+n);
    return (n === 2) ? Promise.reject(n) : Promise.resolve(n);
}

function stepError(n) {
    console.log('Error '+n);
    return Promise.reject(n);
}

La sortie du code ci-dessus est:

Step 1
Step 2
Error 2
Step 3
[UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): 2]

Dans ma compréhension, l'étape 2 doit briser la chaîne et l'étape 3 ne doit pas être exécuté. Lors de l'étape(2) renvoie le refus de la promesse, stepError(2) est exécuté comme prévu. Mais, puisqu'il revient à la Promesse.rejeter(2), la fonction dans l'autre, alors ne doit pas être exécuté, et depuis il n'y a pas de captures en fin de compte, l'a rejeté la promesse de l'étape 2 semble - comme prévu - être acheminées jusqu'à la sortie de la chaîne, car il n'a pas trouve de tout gestionnaire.

Ce qui me manque ici ?

Ici est un JSFiddle pour jouer avec: https://jsfiddle.net/6p4t9xyk/

OriginalL'auteur user6822275 | 2016-12-11