Update Promise

- Promises/A+ compliance
- basic tests
This is missing returning the promise.