title: Should I refrain from handling Promise rejection asynchronously?
body: <p>I have just installed Node v7.2.0 and learned that the following code:</p>
  
  <pre><code>var prm = Promise.reject(new Error('fail'));
  </code></pre>
  
  <p>results in this message:;</p>
  
  <pre><code>(node:4786) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: fail
  (node:4786) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
  </code></pre>
  
  <p>I understand the reasoning behind this as many programmers have probably experienced the frustration of an <code>Error</code> ending up being swallowed by a <code>Promise</code>. However then I did this experiment:</p>
  
  <pre><code>var prm = Promise.reject(new Error('fail'));
  
  setTimeout(() =&gt; {
      prm.catch((err) =&gt; {
          console.log(err.message);
      })
  },
  0)
  </code></pre>
  
  <p>which results in:</p>
  
  <pre><code>(node:4860) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: fail
  (node:4860) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
  (node:4860) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 1)
  fail
  </code></pre>
  
  <p>I on basis of the <code>PromiseRejectionHandledWarning</code> assume that handling a <code>Promise</code> rejection <em>asynchronously</em> is/might be a bad thing.</p>
  
  <p>But why is that?</p>