title: Why can't try/catch handle error throw in Promise constructor
body: <p>This code get's <code>unhandledRejection</code> error and I don't know why.</p>
  <p>If the Error is thrown in try/catch, shouldn't it be caught by Catch Expression?</p>
  <pre class="lang-js prettyprint-override"><code>async function main () {
    try {
      await run(throwError)
    } catch (error) {
      console.log('main catch error', error);
    }
  }
  
  async function run (callback) {
    return new Promise(async resolve =&gt; {
      await throwError()
    });
  }
  
  async function throwError () {
    throw new Error('custom error')
  }
  
  process.on('unhandledRejection', (reason, promise) =&gt; {
    console.log('unhandledRejection - reason', reason, promise);
  })
  
  main()
  </code></pre>