src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts/ConfigurationManager/resolveConfigurationByProviders
class ConfigurationManager:	async resolveConfigurationByProviders(folderUri: uri | undefined, type: string | undefined, config: IConfig, token: CancellationToken): Promise<IConfig | null | undefined> {
		await this.adapterManager.activateDebuggers('onDebugResolve', type);
		// pipe the config through the promises sequentially. Append at the end the '*' types
		const providers = this.configProviders.filter(p => p.type === type && p.resolveDebugConfiguration)
			.concat(this.configProviders.filter(p => p.type === '*' && p.resolveDebugConfiguration));

		let result: IConfig | null | undefined = config;
		await sequence(providers.map(provider => async () => {
			// If any provider returned undefined or null make sure to respect that and do not pass the result to more resolver
			if (result) {
				result = await provider.resolveDebugConfiguration!(folderUri, result, token);
			}
		}));

		// The resolver can change the type, ensure activation happens, #135090
		if (result?.type && result.type !== config.type) {
			await this.adapterManager.activateDebuggers('onDebugResolve', result.type);
		}

		return result;
	}