Update Promise

- Promises/A+ compliance
- basic tests
It's probably a conscious compromise on their part, not a bug per se. But opening an issue wouldn't hurt.