diff --git a/extensions/typescript-language-features/web/src/webServer.ts b/extensions/typescript-language-features/web/src/webServer.ts
index 0ea25aee765..3d2d5f9dfeb 100644
--- a/extensions/typescript-language-features/web/src/webServer.ts
+++ b/extensions/typescript-language-features/web/src/webServer.ts
@@ -2,7 +2,6 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-///
///
import ts from 'typescript/lib/tsserverlibrary';
@@ -12,14 +11,10 @@ import { Logger, parseLogLevel } from './logging';
import { PathMapper } from './pathMapper';
import { createSys } from './serverHost';
import { findArgument, findArgumentStringArray, hasArgument, parseServerMode } from './util/args';
-import { StartSessionOptions, createWorkerSession } from './workerSession';
+import { StartSessionOptions, startWorkerSession } from './workerSession';
const setSys: (s: ts.System) => void = (ts as any).setSys;
-// GLOBALS
-let session: WorkerSession | undefined;
-// END GLOBALS
-
async function initializeSession(
args: readonly string[],
extensionUri: URI,
@@ -46,8 +41,7 @@ async function initializeSession(
removeEventListener('message', listener);
});
setSys(sys);
- session = createWorkerSession(ts, sys, fs, sessionOptions, ports.tsserver, pathMapper, logger);
- session.listen();
+ startWorkerSession(ts, sys, fs, sessionOptions, ports.tsserver, pathMapper, logger);
}
function parseSessionOptions(args: readonly string[], serverMode: ts.LanguageServiceMode | undefined): StartSessionOptions {
diff --git a/extensions/typescript-language-features/web/src/workerSession.ts b/extensions/typescript-language-features/web/src/workerSession.ts
index c752654b7d6..6ae517ccc32 100644
--- a/extensions/typescript-language-features/web/src/workerSession.ts
+++ b/extensions/typescript-language-features/web/src/workerSession.ts
@@ -22,7 +22,7 @@ export interface StartSessionOptions {
readonly disableAutomaticTypingAcquisition: boolean;
}
-export function createWorkerSession(
+export function startWorkerSession(
ts: typeof import('typescript/lib/tsserverlibrary'),
host: ts.server.ServerHost,
fs: FileSystem | undefined,
@@ -30,10 +30,10 @@ export function createWorkerSession(
port: MessagePort,
pathMapper: PathMapper,
logger: Logger,
-) {
+): void {
const indent: (str: string) => string = (ts as any).server.indent;
- return new class WorkerSession extends ts.server.Session<{}> {
+ const worker = new class WorkerSession extends ts.server.Session<{}> {
private readonly wasmCancellationToken: WasmCancellationToken;
private readonly listener: (message: any) => void;
@@ -121,4 +121,6 @@ export function createWorkerSession(
port.onmessage = this.listener;
}
}();
+
+ worker.listen();
}