diff options
Diffstat (limited to 'core/01_core.js')
-rw-r--r-- | core/01_core.js | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/core/01_core.js b/core/01_core.js index ab54316e5..4cefb52e9 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -194,8 +194,9 @@ function opAsync2(name, arg0, arg1) { const id = nextPromiseId++; let promise = PromisePrototypeThen(setPromise(id), unwrapOpResult); + let maybeResult; try { - ops[name](id, arg0, arg1); + maybeResult = ops[name](id, arg0, arg1); } catch (err) { // Cleanup the just-created promise getPromise(id); @@ -204,14 +205,20 @@ } promise = handleOpCallTracing(name, id, promise); promise[promiseIdSymbol] = id; + if (typeof maybeResult !== "undefined") { + const promise = getPromise(id); + promise.resolve(maybeResult); + } + return promise; } function opAsync(name, ...args) { const id = nextPromiseId++; let promise = PromisePrototypeThen(setPromise(id), unwrapOpResult); + let maybeResult; try { - ops[name](id, ...new SafeArrayIterator(args)); + maybeResult = ops[name](id, ...new SafeArrayIterator(args)); } catch (err) { // Cleanup the just-created promise getPromise(id); @@ -220,6 +227,11 @@ } promise = handleOpCallTracing(name, id, promise); promise[promiseIdSymbol] = id; + if (typeof maybeResult !== "undefined") { + const promise = getPromise(id); + promise.resolve(maybeResult); + } + return promise; } |