comment briser la chaîne de promesses

Je une promesse dans un tel mode,

function getMode(){
    var deferred = Promise.defer();

    checkIf('A')
    .then(function(bool){
        if(bool){
            deferred.resolve('A');
        }else{
            return checkIf('B');
        }
    }).then(function(bool){
        if(bool){
            deferred.resolve('B');
        }else{
            return checkIf('C');
        }
    }).then(function(bool){
        if(bool){
            deferred.resolve('C');
        }else{
            deferred.reject();
        }
    });

    return deferred.promise;
}

checkIf retourne une promesse, et oui checkIf ne peut pas être modifié.

Comment puis-je sortir de la chaîne lors du premier match? (toute autre manière que celle explicitement jeter erreur?)

source d'informationauteur mido