promises: A+ compliance, better async, unhandled rejection reporter

This commit is contained in:
Leo Horie 2016-06-01 01:24:14 -04:00
parent 3bb0a6287f
commit 2e6e1c73d0
2 changed files with 45 additions and 23 deletions

View file

@ -282,7 +282,8 @@ o.spec("promise", function() {
})
o("absorbs resolved promise in executor resolve", function(done) {
var promise = new Promise(function(resolve, reject) {
resolve(Promise.resolve(1))
var p = Promise.resolve(1)
resolve(p)
})
promise.then(function(value) {
@ -482,7 +483,7 @@ o.spec("promise", function() {
done()
}, 10)
})
o("absorbs early resolved promise", function(done, t) {
o("absorbs early resolved promise", function(done) {
var resolved = Promise.resolve(1)
var promise = new Promise(function(resolve) {
setTimeout(function() {
@ -589,5 +590,20 @@ o.spec("promise", function() {
done()
})
})
o("works if thennable resolves async rejection then throws", function(done) {
var promise = new Promise(function(res) {
res({
then: function(resolve, reject) {
setTimeout(function() {reject(2)})
}
})
throw 3
})
promise.then(null, function(value) {
o(value).equals(2)
done()
})
})
})
})