title: ES6 Promise / Typescript and the Bluebird Promise
body: <p>I have a nodejs / typescript 2 project and use the <a href="https://github.com/stefanpenner/es6-promise" rel="noreferrer">es6-promise</a> package. 
  Now i would like to get rid of the extra package because i can target ES6 in typescript directly. </p>
  
  <p>So i removed the es6-promise package and changed the tsconfig.json to target es6.</p>
  
  <pre><code>{
    "compilerOptions": {
      "target": "es6",
      // ...
    }
  }
  </code></pre>
  
  <p>Many 3rd party packages uses the Bluebird promise but the promise definition is incompatible to the default es6 promise as stated on different posts on github</p>
  
  <ul>
  <li><a href="https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11027" rel="noreferrer">bluebird 3.0 definifion is not assignable to ES6 Promises</a></li>
  <li><a href="https://github.com/Microsoft/TypeScript/issues/12382" rel="noreferrer">Provide a way to load Bluebird globally in es6 compilation target.</a></li>
  <li><a href="https://github.com/petkaantonov/bluebird/issues/1277" rel="noreferrer">Add Symbol.toStringTag to promise instance</a> </li>
  </ul>
  
  <p>So i am getting the following error.</p>
  
  <blockquote>
    <p>TS2322: Type 'Bluebird' is not assignable to type 'Promise'. Property '[Symbol.toStringTag]' is missing in type 'Bluebird'.</p>
  </blockquote>
  
  <p>There is a other types package on npm <a href="https://www.npmjs.com/package/@types/bluebird-global" rel="noreferrer">@types/bluebird-global</a>. 
  In one of the blog post a user suggests to use it instead of <a href="https://www.npmjs.com/package/@types/bluebird" rel="noreferrer">@types/bluebird</a> but some 3rd party packages (e.g. sequelize typings) reference bluebird and not bluebird-global so i get another error for the missing typings of bluebird.</p>
  
  <p>What is a good solution to get this to work?</p>