title: Promises with ES6 destructuring?
body: <p>I've tried mixing <code>Promises</code> with ES6 destructuring syntax (just for experimentation purposes) but the following code throws an error:</p>
  
  <pre><code>function delay(ms) {
    return new Promise((resolve, reject) =&gt; {
      setTimeout(() =&gt; resolve(), ms)
    })
  }
  
  const { then } = delay(2000)
  
  console.log(typeof then) // ==&gt; 'function'
  
  // throws TypeError:
  then(() =&gt; {
    console.log(`done!`)
  })
  </code></pre>
  
  <p>On Node.js v7.10.1 it prints:</p>
  
  <blockquote>
    <p>TypeError: Cannot read property 'Symbol(promise_state_symbol)' of undefined</p>
  </blockquote>
  
  <p>Chrome console also throws a <code>TypeError</code>, but with a different message:</p>
  
  <blockquote>
    <p>Uncaught TypeError: Method Promise.prototype.then called on incompatible receiver undefined</p>
  </blockquote>
  
  <p>These errors don't say much to me. What's better explanation for this?</p>