aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-02 22:30:04 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-02 22:30:04 -0800
commit1b7b37232eb0e9e36e9d5f693e14a5d9bc74efbd (patch)
tree059eaa793277d3243575d19fc35826c02d7b0c26 /src
parentfe4f39fd17b8ffbb809871b9e4c6550063f15657 (diff)
downloadbun-1b7b37232eb0e9e36e9d5f693e14a5d9bc74efbd.tar.gz
bun-1b7b37232eb0e9e36e9d5f693e14a5d9bc74efbd.tar.zst
bun-1b7b37232eb0e9e36e9d5f693e14a5d9bc74efbd.zip
Run promise before callback
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/api/bun/subprocess.zig26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/bun.js/api/bun/subprocess.zig b/src/bun.js/api/bun/subprocess.zig
index 75f1eb05c..ba1aab7ff 100644
--- a/src/bun.js/api/bun/subprocess.zig
+++ b/src/bun.js/api/bun/subprocess.zig
@@ -1471,6 +1471,19 @@ pub const Subprocess = struct {
defer this.updateHasPendingActivity();
this.has_waitpid_task = false;
+ if (this.exit_promise.trySwap()) |promise| {
+ if (this.exit_code) |code| {
+ promise.asPromise().?.resolve(globalThis, JSValue.jsNumber(code));
+ } else if (this.waitpid_err) |err| {
+ this.waitpid_err = null;
+ promise.asPromise().?.reject(globalThis, err.toJSC(globalThis));
+ } else {
+ // crash in debug mode
+ if (comptime Environment.allow_assert)
+ unreachable;
+ }
+ }
+
if (this.on_exit_callback.trySwap()) |callback| {
const exit_value: JSValue = if (this.exit_code) |code|
JSC.JSValue.jsNumber(code)
@@ -1498,19 +1511,6 @@ pub const Subprocess = struct {
}
}
- if (this.exit_promise.trySwap()) |promise| {
- if (this.exit_code) |code| {
- promise.asPromise().?.resolve(globalThis, JSValue.jsNumber(code));
- } else if (this.waitpid_err) |err| {
- this.waitpid_err = null;
- promise.asPromise().?.reject(globalThis, err.toJSC(globalThis));
- } else {
- // crash in debug mode
- if (comptime Environment.allow_assert)
- unreachable;
- }
- }
-
this.unref();
}