title: Executing then after catch
body: <p>I have the following fiddle:
  <a href="http://jsfiddle.net/thelgevold/3uv9nnjm/6/" rel="noreferrer">http://jsfiddle.net/thelgevold/3uv9nnjm/6/</a></p>
  
  <pre><code>angular.module('hello',[]).controller('helloController',function($q){
  
      console.clear();
      function someService(){
         var deferred = $q.defer();
         deferred.reject({e:'error'}); 
         return deferred.promise;
      } 
  
      function callService(){
          return someService().then(function(obj){
             console.log('first then');
          }).
          catch(function(e){
              console.log('error1');
              var deferred = $q.defer();
              deferred.reject({e:'error'}); 
              return deferred.promise;
          });
      }
  
      callService().catch(function(e){
        console.log('error2');
      }).then(function(e){
        console.log('second then');
      });
  
  });
  </code></pre>
  
  <p>It's essentially just a quick $q promise POC. My question is: Why does the last then clause get called when the promise is rejected? The output is as follows:</p>
  
  <p>error1</p>
  
  <p>error2</p>
  
  <p>second then</p>
  
  <p>I understand why error1/error2 are printed, but I thought the second then string should not be printed since the promise was rejected. I thought it would omit "second then" for the same reason the "first then" is omitted. 
  Any thoughts?</p>