Skip to content

Commit cde3054

Browse files
committed
Fix potential 500 when loading in parallel
1 parent bcf60c1 commit cde3054

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/node/app/vscode.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,15 @@ export class VscodeHttpProvider extends HttpProvider {
5050

5151
logger.debug("setting up vs code...")
5252
return new Promise<WorkbenchOptions>((resolve, reject) => {
53-
vscode.once("message", (message: VscodeMessage) => {
54-
logger.debug("got message from vs code", field("message", message))
55-
return message.type === "options" && message.id === id
56-
? resolve(message.options)
57-
: reject(new Error("Unexpected response during initialization"))
58-
})
53+
const onMessage = (message: VscodeMessage) => {
54+
// There can be parallel initializations so wait for the right ID.
55+
if (message.type === "options" && message.id === id) {
56+
logger.trace("got message from vs code", field("message", message))
57+
vscode.off("message", onMessage)
58+
resolve(message.options)
59+
}
60+
}
61+
vscode.on("message", onMessage)
5962
vscode.once("error", reject)
6063
vscode.once("exit", (code) => reject(new Error(`VS Code exited unexpectedly with code ${code}`)))
6164
this.send({ type: "init", id, options }, vscode)
@@ -77,7 +80,7 @@ export class VscodeHttpProvider extends HttpProvider {
7780

7881
this._vscode = new Promise((resolve, reject) => {
7982
vscode.once("message", (message: VscodeMessage) => {
80-
logger.debug("got message from vs code", field("message", message))
83+
logger.trace("got message from vs code", field("message", message))
8184
return message.type === "ready"
8285
? resolve(vscode)
8386
: reject(new Error("Unexpected response waiting for ready response"))

0 commit comments

Comments
 (0)