diff options
author | 2022-12-02 01:56:12 -0800 | |
---|---|---|
committer | 2022-12-02 01:56:12 -0800 | |
commit | 8eddfc61a83657c770833665a0fb9926aa326603 (patch) | |
tree | ccb130aeb8664e0fa1800750eb7e66a11179399b /src/bun.js/base.zig | |
parent | 37525db5cf2b8b609bd16cc9cfa0c80aa80f9f00 (diff) | |
download | bun-8eddfc61a83657c770833665a0fb9926aa326603.tar.gz bun-8eddfc61a83657c770833665a0fb9926aa326603.tar.zst bun-8eddfc61a83657c770833665a0fb9926aa326603.zip |
Add generic way to block on a promise
Diffstat (limited to '')
-rw-r--r-- | src/bun.js/base.zig | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig index 6ca9e1084..f331dc8f5 100644 --- a/src/bun.js/base.zig +++ b/src/bun.js/base.zig @@ -2763,23 +2763,13 @@ pub fn wrapWithHasContainer( if (comptime maybe_async) { if (result.asPromise() != null or result.asInternalPromise() != null) { var vm = ctx.ptr().bunVM(); - vm.tick(); - var promise = JSC.JSInternalPromise.resolvedPromise(ctx.ptr(), result); - switch (promise.status(ctx.ptr().vm())) { - JSC.JSPromise.Status.Pending => { - while (promise.status(ctx.ptr().vm()) == .Pending) { - vm.tick(); - } - result = promise.result(ctx.ptr().vm()); - }, - JSC.JSPromise.Status.Rejected => { - result = promise.result(ctx.ptr().vm()); - exception.* = result.asObjectRef(); - }, - JSC.JSPromise.Status.Fulfilled => { - result = promise.result(ctx.ptr().vm()); - }, + if (result.asPromise()) |promise| { + vm.waitForPromise(promise); + result = promise.result(ctx.vm()); + } else if (result.asInternalPromise()) |promise| { + vm.waitForPromise(promise); + result = promise.result(ctx.vm()); } } } |