title: ininfinite loop in promise catch with callback error
body: <p>I'm pretty convinced I'm misunderstanding how promises work but lots have reading has failed to resolve my issue. </p>
  
  <p>I've got existing code that calls another module that's just been changed to use promises. Using the old version looked like this:</p>
  
  <pre><code>function(params, cb) {
    .....
    asyncFunc(p1, (err, res) =&gt; {
      if (!err)
         .....
         cb(null,'msg');
      else
         cb(err);
    };
  };
  </code></pre>
  
  <p>changing this to:</p>
  
  <pre><code>function(params, cb) {
    .....
  asyncFuncwithPromise(p1).then(res = &gt; {
      ...  // X
      return cb(null,'msg');
  }).catch(err =&gt; {
      cb(err);
  });
  </code></pre>
  
  <p>If the code at line X throws an exception this goes into an infinite loop of catch()->then().  Removing the callback from the catch and everything's fine. Can anyone explain? </p>