src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts/WebExtensionsScannerService/updateCustomBuiltinExtensionsCache
class WebExtensionsScannerService:	private async updateCustomBuiltinExtensionsCache(): Promise<IWebExtension[]> {
		if (!this._updateCustomBuiltinExtensionsCachePromise) {
			this._updateCustomBuiltinExtensionsCachePromise = (async () => {
				this.logService.info('Updating additional builtin extensions cache');
				const cached = await this.getCustomBuiltinExtensionsFromCache();
				const webExtensions: IWebExtension[] = [];
				const { extensions } = await this.readCustomBuiltinExtensionsInfoFromEnv();
				if (extensions.length) {
					const galleryExtensionsMap = await this.getExtensionsWithDependenciesAndPackedExtensions(extensions);
					const missingExtensions = extensions.filter(({ id }) => !galleryExtensionsMap.has(id.toLowerCase()));
					if (missingExtensions.length) {
						this.logService.info('Skipping the additional builtin extensions because their compatible versions are not found.', missingExtensions);
					}
					await Promise.all([...galleryExtensionsMap.values()].map(async gallery => {
						try {
							const webExtension = cached.find(e => areSameExtensions(e.identifier, gallery.identifier) && e.version === gallery.version)
								?? await this.toWebExtensionFromGallery(gallery, { isPreReleaseVersion: gallery.properties.isPreReleaseVersion, preRelease: gallery.properties.isPreReleaseVersion, isBuiltin: true });
							webExtensions.push(webExtension);
						} catch (error) {
							this.logService.info(`Ignoring additional builtin extension ${gallery.identifier.id} because there is an error while converting it into web extension`, getErrorMessage(error));
						}
					}));
				}
				await this.writeCustomBuiltinExtensionsCache(() => webExtensions);
				return webExtensions;
			})();
		}
		return this._updateCustomBuiltinExtensionsCachePromise;
	}