Code change:
*  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import { Queue } from 'vs/base/common/async'; import { IStringDictionary } from 'vs/base/common/collections'; import { Schemas } from 'vs/base/common/network'; import { IProcessEnvironment } from 'vs/base/common/platform'; import * as Types from 'vs/base/common/types'; </ins> import { URI as uri } from 'vs/base/common/uri'; <ins> import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; </ins> import * as nls from 'vs/nls'; <del> import * as Types from 'vs/base/common/types'; import { Schemas } from 'vs/base/common/network'; import { SideBySideEditor, EditorResourceAccessor } from 'vs/workbench/common/editor'; import { IStringDictionary } from 'vs/base/common/collections'; import { IConfigurationService, IConfigurationOverrides, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; </del> import { ICommandService } from 'vs/platform/commands/common/commands'; <del> import { IWorkspaceFolder, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { IQuickInputService, IInputOptions, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IProcessEnvironment } from 'vs/base/common/platform'; </del> <ins> import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { ILabelService } from 'vs/platform/label/common/label'; <del> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </del> <ins> import { IInputOptions, IPickOptions, IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { EditorResourceAccessor, SideBySideEditor } from 'vs/workbench/common/editor'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </ins> import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export abstract class BaseConfigurationResolverService extends AbstractVariableResolverService { static readonly INPUT_OR_COMMAND_VARIABLES_PATTERN = /${((input|command):(.*?))}/g; <ins> private userInputAccessQueue = new Queue<string | IQuickPickItem | undefined>(); </ins> constructor( context: { getAppRoot: () => string | undefined;

Related discussion:
text: As an easy workaround, I can put a queue around calling into the vscode variable resolver and calling an extension debug config provider. But, putting a queue around two unrelated pieces of code seems to say that I'm solving the problem at the wrong level.
Or maybe make them the same level by moving the resolve queue to
Just to be clear. The two callers of the are in two different places right (core and extension)?
Right
Ok I've not heard of any feature request like this but feel free to open one... I wonder if maybe instead Core could have concept of "important" quick picks that can't be stomped over by extensions and instead the extension calls wait until Core is done. Then we don't need any more API
It can also go the other way. The problem is just that there are two async processes that have to run and show a quick input, and we need both of them to complete and not to get canceled by the other. Filed I'll go with a workaround for now, so I'm not blocked, just figured I'd start the discussion
Sorry for the late reply. I tested this today and it works for our scenario. Thanks for the quick fixes!