diff --git a/src/client/activation/languageServer/languageServerProxy.ts b/src/client/activation/languageServer/languageServerProxy.ts index c0ae13b03557..1d7c0cf8d33a 100644 --- a/src/client/activation/languageServer/languageServerProxy.ts +++ b/src/client/activation/languageServer/languageServerProxy.ts @@ -102,9 +102,13 @@ export class DotNetLanguageServerProxy implements ILanguageServerProxy { } @captureTelemetry(EventName.PYTHON_LANGUAGE_SERVER_READY, undefined, true) protected async serverReady(): Promise { - while (this.languageClient && !this.languageClient!.initializeResult) { + // languageClient can be disposed in awaits. + while (this.languageClient && !this.languageClient.initializeResult) { await sleep(100); } + if (this.languageClient) { + await this.languageClient.onReady(); + } this.startupCompleted.resolve(); } @swallowExceptions('Activating Unit Tests Manager for Language Server') diff --git a/src/client/activation/node/languageServerProxy.ts b/src/client/activation/node/languageServerProxy.ts index 0e02adb97eae..4d5bfc9429cd 100644 --- a/src/client/activation/node/languageServerProxy.ts +++ b/src/client/activation/node/languageServerProxy.ts @@ -146,9 +146,12 @@ export class NodeLanguageServerProxy implements ILanguageServerProxy { NodeLanguageServerProxy.versionTelemetryProps ) protected async serverReady(): Promise { - while (this.languageClient && !this.languageClient!.initializeResult) { + while (this.languageClient && !this.languageClient.initializeResult) { await sleep(100); } + if (this.languageClient) { + await this.languageClient.onReady(); + } this.startupCompleted.resolve(); }