summaryrefslogtreecommitdiff
path: root/cli/js/dispatch_json.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/dispatch_json.ts')
-rw-r--r--cli/js/dispatch_json.ts12
1 files changed, 9 insertions, 3 deletions
diff --git a/cli/js/dispatch_json.ts b/cli/js/dispatch_json.ts
index 572ec855a..890568409 100644
--- a/cli/js/dispatch_json.ts
+++ b/cli/js/dispatch_json.ts
@@ -75,11 +75,17 @@ export async function sendAsync(
const promiseId = nextPromiseId();
args = Object.assign(args, { promiseId });
const promise = util.createResolvable<Ok>();
- promiseTable.set(promiseId, promise);
const argsUi8 = encode(args);
- const resUi8 = core.dispatch(opId, argsUi8, zeroCopy);
- util.assert(resUi8 == null);
+ const buf = core.dispatch(opId, argsUi8, zeroCopy);
+ if (buf) {
+ // Sync result.
+ const res = decode(buf);
+ promise.resolve(res);
+ } else {
+ // Async result.
+ promiseTable.set(promiseId, promise);
+ }
const res = await promise;
return unwrapResponse(res);