summaryrefslogtreecommitdiff
path: root/core/01_core.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/01_core.js')
-rw-r--r--core/01_core.js16
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;
}