@@ -50,12 +50,15 @@ export class VscodeHttpProvider extends HttpProvider {
50
50
51
51
logger . debug ( "setting up vs code..." )
52
52
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 )
59
62
vscode . once ( "error" , reject )
60
63
vscode . once ( "exit" , ( code ) => reject ( new Error ( `VS Code exited unexpectedly with code ${ code } ` ) ) )
61
64
this . send ( { type : "init" , id, options } , vscode )
@@ -77,7 +80,7 @@ export class VscodeHttpProvider extends HttpProvider {
77
80
78
81
this . _vscode = new Promise ( ( resolve , reject ) => {
79
82
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 ) )
81
84
return message . type === "ready"
82
85
? resolve ( vscode )
83
86
: reject ( new Error ( "Unexpected response waiting for ready response" ) )
0 commit comments