diff options
-rw-r--r-- | src/bun.js/test/jest.zig | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index bee8467e6..9e441c614 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -694,12 +694,13 @@ pub const TestScope = struct { ) Result { if (comptime is_bindgen) return undefined; var vm = VirtualMachine.vm; + var callback = this.callback; defer { - js.JSValueUnprotect(vm.global.ref(), this.callback); + js.JSValueUnprotect(vm.global.ref(), callback); this.callback = null; } JSC.markBinding(); - const initial_value = js.JSObjectCallAsFunctionReturnValue(vm.global.ref(), this.callback, null, 0, null); + const initial_value = js.JSObjectCallAsFunctionReturnValue(vm.global.ref(), callback, null, 0, null); if (initial_value.isException(vm.global.vm()) or initial_value.isError() or initial_value.isAggregateError(vm.global)) { vm.runErrorHandler(initial_value, null); @@ -711,21 +712,21 @@ pub const TestScope = struct { return .{ .pending = .{} }; } - this.promise = JSC.JSInternalPromise.resolvedPromise(vm.global, initial_value); + var promise = JSC.JSInternalPromise.resolvedPromise(vm.global, initial_value); + this.promise = promise; + defer { this.promise = null; } - vm.waitForPromise(this.promise.?); - switch (this.promise.?.status(vm.global.vm())) { + vm.waitForPromise(promise); + switch (promise.status(vm.global.vm())) { .Rejected => { - vm.runErrorHandler(this.promise.?.result(vm.global.vm()), null); + vm.runErrorHandler(promise.result(vm.global.vm()), null); return .{ .fail = this.counter.actual }; }, else => { - if (this.promise != null) - // don't care about the result - _ = this.promise.?.result(vm.global.vm()); + _ = promise.result(vm.global.vm()); }, } } |