This commit is contained in:
Dmitry Vasilev
2022-12-02 04:13:32 +08:00
parent f062056ad1
commit 0845a87960
12 changed files with 272 additions and 5 deletions

40
src/patch_promise.js Normal file
View File

@@ -0,0 +1,40 @@
export const patch_promise = window => {
// TODO check that it is not already patched
if(window.Promise.Original != null) {
throw new Error('already patched')
}
class PromiseWithStatus extends Promise {
constructor(fn) {
let status
let is_constructor_finished = false
super(
(resolve, reject) => {
fn(
(value) => {
status = {ok: true, value}
if(is_constructor_finished) {
this.status = status
}
resolve(value)
},
(error) => {
status = {ok: false, error}
if(is_constructor_finished) {
this.status = status
}
reject(error)
},
)
}
)
is_constructor_finished = true
this.status = status
}
}
PromiseWithStatus.Original = Promise
window.Promise = PromiseWithStatus
}