Update Promise

- Promises/A+ compliance
- basic tests
I'm not sure. See:

```js
Array.prototype.every.call(42, function () {})
// true

Promise.all(42).catch(console.error.bind(console))
// TypeError: Argument 1 of Promise.all can't be converted to a sequence.
```