diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts index a1257da9a0a..7fde2926aa0 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts @@ -161,6 +161,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { private readonly _mainThreadTelemetryProxy: MainThreadTelemetryShape; private readonly _mainThreadExtensionsProxy: MainThreadExtensionServiceShape; + private readonly _almostReadyToRunExtensions: Barrier; private readonly _barrier: Barrier; private readonly _registry: ExtensionDescriptionRegistry; private readonly _storage: ExtHostStorage; @@ -192,6 +193,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { this._mainThreadTelemetryProxy = this._extHostContext.getProxy(MainContext.MainThreadTelemetry); this._mainThreadExtensionsProxy = this._extHostContext.getProxy(MainContext.MainThreadExtensionService); + this._almostReadyToRunExtensions = new Barrier(); this._barrier = new Barrier(); this._registry = new ExtensionDescriptionRegistry(initData.extensions); this._storage = new ExtHostStorage(this._extHostContext); @@ -248,6 +250,9 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { await initializeExtensionApi(this, this._extensionApiFactory, this._registry, configProvider); // Do this when extension service exists, but extensions are not being activated yet. await connectProxyResolver(this._extHostWorkspace, configProvider, this, this._extHostLogService, this._mainThreadTelemetryProxy); + this._almostReadyToRunExtensions.open(); + + await this._extHostWorkspace.waitForInitializeCall(); this._barrier.open(); } catch (err) { errors.onUnexpectedError(err); @@ -657,7 +662,6 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { this._started = true; return this._barrier.wait() - .then(() => this._extHostWorkspace.waitForInitializeCall()) .then(() => this._handleEagerExtensions()) .then(() => this._handleExtensionTests()) .then(() => { @@ -683,7 +687,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape { } const authorityPrefix = remoteAuthority.substr(0, authorityPlusIndex); - await this._barrier.wait(); + await this._almostReadyToRunExtensions.wait(); await this._activateByEvent(`onResolveRemoteAuthority:${authorityPrefix}`, false); const resolver = this._resolvers[authorityPrefix];