tenter de rompre la chaîne de promesses jQuery avec .then, .fail et .reject

Mise à jour: ce problème a été une suite de jQuery 1.7 vs 1.8. N'employez jamais de promesses en 1.7, car ils ne sont pas chainable avec le retour d'une promesse à l'intérieur d'un .then. 1.8 dirait qu'ils n'ont pas le louper.

http://jsfiddle.net/delvarworld/28TDM/

//make a promise
var deferred = $.Deferred();
promise = deferred.promise();

//return a promise, that after 1 second, is rejected
promise.then(function(){
    var t = $.Deferred();
    setTimeout(function() {
        console.log('rejecting...');
        t.reject();
    }, 1000);

    return t.promise();
});

//if that promise is successful, do this
promise.then(function() {
    console.log('i should never be called');
})

//if it errors, do this
promise.fail(function() {
    console.log('i should be called');
});

deferred.resolve();

Attendu: "je devrais être appelé"

Réel: "je ne devrait jamais être appelé"

Problème: je veux de la chaîne des rappels et l'un d'entre eux d'être en mesure de briser la chaîne et de déclencher la fail fonction, puis passez à l'autre enchaînés rappels. Je ne comprends pas pourquoi tous les arrêtera sont déclenchées et l'échec n'est pas déclenché.

Je viens de NodeJS Q bibliothèque, j'ai donc essayé avec .then premier. Cependant, le changer pour .pipe n'a aucun effet.

source d'informationauteur Andy Ray