src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts/SharedProcessWorkerService/getOrCreateWebWorker
class SharedProcessWorkerService:	private getOrCreateWebWorker(configuration: ISharedProcessWorkerConfiguration): Promise<SharedProcessWebWorker> {

		// keep 1 web-worker per process module id to reduce
		// the overall number of web workers while still
		// keeping workers for separate processes around.
		let webWorkerPromise = this.workers.get(configuration.process.moduleId);

		// create a new web worker if this is the first time
		// for the given process
		if (!webWorkerPromise) {
			this.logService.trace(`SharedProcess: creating new web worker (${configuration.process.moduleId})`);

			const sharedProcessWorker = new SharedProcessWebWorker(configuration.process.type, this.logService);
			webWorkerPromise = sharedProcessWorker.init();

			// Make sure to run through our normal `disposeWorker` call
			// when the process terminates by itself.
			sharedProcessWorker.onDidProcessSelfTerminate(({ configuration, reason }) => {
				this.doDisposeWorker(configuration, reason);
			});

			this.workers.set(configuration.process.moduleId, webWorkerPromise);
		}

		return webWorkerPromise;
	}