src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.ts/BaseConfigurationResolverService/resolveWithInteractionReplace
class BaseConfigurationResolverService:	public override async resolveWithInteractionReplace(folder: IWorkspaceFolder | undefined, config: any, section?: string, variables?: IStringDictionary<string>, target?: ConfigurationTarget): Promise<any> {
		// resolve any non-interactive variables and any contributed variables
		config = await this.resolveAnyAsync(folder, config);

		// resolve input variables in the order in which they are encountered
		return this.resolveWithInteraction(folder, config, section, variables, target).then(mapping => {
			// finally substitute evaluated command variables (if there are any)
			if (!mapping) {
				return null;
			} else if (mapping.size > 0) {
				return this.resolveAnyAsync(folder, config, fromMap(mapping));
			} else {
				return config;
			}
		});
	}