Allows an inheriting constructor to return itself when calling .then

given
```js
function Awesome(fn) {
  if (!(this instanceof Awesome)) return new Awesome(fn)
  Promise.call(this, fn)
}
Awesome.prototype = Object.create(Promise.prototype)
Awesome.prototype.constructor = Awesome
```

previously...
```js
var awesome = new Awesome(function () {})
awesome.then(function () {})
// => Promise
```

now...
```js
var awesome = new Awesome(function () {})
awesome.then(function () {})
// => Awesome
```