Skip to content

Commit 03e0013

Browse files
committed
Unbind error/exit events once handshakes resolve
1 parent e243f6e commit 03e0013

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/node/vscode.ts

+13-2
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,20 @@ export class VscodeProvider {
5151

5252
logger.debug("setting up vs code...")
5353
return new Promise<ipc.WorkbenchOptions>((resolve, reject) => {
54+
const onExit = (code: number | null) => reject(new Error(`VS Code exited unexpectedly with code ${code}`))
55+
5456
vscode.once("message", (message: ipc.VscodeMessage) => {
5557
logger.debug("got message from vs code", field("message", message))
58+
vscode.off("error", reject)
59+
vscode.off("exit", onExit)
5660
return message.type === "options" && message.id === id
5761
? resolve(message.options)
5862
: reject(new Error("Unexpected response during initialization"))
5963
})
64+
6065
vscode.once("error", reject)
61-
vscode.once("exit", (code) => reject(new Error(`VS Code exited unexpectedly with code ${code}`)))
66+
vscode.once("exit", onExit)
67+
6268
this.send(
6369
{
6470
type: "init",
@@ -90,14 +96,19 @@ export class VscodeProvider {
9096
})
9197

9298
this._vscode = new Promise((resolve, reject) => {
99+
const onExit = (code: number | null) => reject(new Error(`VS Code exited unexpectedly with code ${code}`))
100+
93101
vscode.once("message", (message: ipc.VscodeMessage) => {
94102
logger.debug("got message from vs code", field("message", message))
103+
vscode.off("error", reject)
104+
vscode.off("exit", onExit)
95105
return message.type === "ready"
96106
? resolve(vscode)
97107
: reject(new Error("Unexpected response waiting for ready response"))
98108
})
109+
99110
vscode.once("error", reject)
100-
vscode.once("exit", (code) => reject(new Error(`VS Code exited unexpectedly with code ${code}`)))
111+
vscode.once("exit", onExit)
101112
})
102113

103114
return this._vscode

0 commit comments

Comments
 (0)