src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts/LanguageConfigurationFileHandler/constructor
class LanguageConfigurationFileHandler:	constructor(
		@ITextMateService textMateService: ITextMateService,
		@IModeService private readonly _modeService: IModeService,
		@IExtensionResourceLoaderService private readonly _extensionResourceLoaderService: IExtensionResourceLoaderService,
		@IExtensionService private readonly _extensionService: IExtensionService
	) {
		this._done = [];

		// Listen for hints that a language configuration is needed/usefull and then load it once
		this._modeService.onDidCreateMode((mode) => {
			const languageIdentifier = mode.getLanguageIdentifier();
			// Modes can be instantiated before the extension points have finished registering
			this._extensionService.whenInstalledExtensionsRegistered().then(() => {
				this._loadConfigurationsForMode(languageIdentifier);
			});
		});
		textMateService.onDidEncounterLanguage((languageId) => {
			this._loadConfigurationsForMode(this._modeService.getLanguageIdentifier(languageId)!);
		});
	}