title: how to break promise chain
body: <p>I a promise in such fashion, </p>
  
  <pre><code>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;
  }
  </code></pre>
  
  <p><code>checkIf</code> returns a promise, and yes <code>checkIf</code> <strong>cannot be modified</strong>.</p>
  
  <p>How do I break out of the chain at the first match? (any way other than explicitly throwing error?)</p>