set status in Promise.then

This commit is contained in:
Dmitry Vasilev
2023-01-17 17:27:31 +08:00
parent 32b294c879
commit c4768bc0e6
2 changed files with 34 additions and 3 deletions

View File

@@ -298,14 +298,18 @@ export const eval_modules = (
promise_then = Promise.prototype.then
Promise.prototype.then = function then(on_resolve, on_reject) {
if(children == null) {
children = []
}
let children_copy = children
const make_callback = cb => typeof(cb) != 'function'
const make_callback = (cb, ok) => typeof(cb) != 'function'
? cb
: value => {
if(this.status == null) {
this.status = ok ? {ok, value} : {ok, error: value}
}
const current = children
children = children_copy
try {
@@ -317,8 +321,8 @@ export const eval_modules = (
return promise_then.call(
this,
make_callback(on_resolve),
make_callback(on_reject),
make_callback(on_resolve, true),
make_callback(on_reject, false),
)
}
}