Update Promise

- Promises/A+ compliance
- basic tests
This should be:

```js
resolve(array[index])).then(createOnFulfilled(), createOnRejected());
```
In a race the first one wins, including the rejected promises.