Update Promise

- Promises/A+ compliance
- basic tests
I mean in `race` it should be the other way around: it **shouldn't** resolve the promise if the array is empty. It should be left forever pending.