src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts/WebExtensionsScannerService/readCustomBuiltinExtensions
class WebExtensionsScannerService:	private async readCustomBuiltinExtensions(): Promise<IExtension[]> {
		const customBuiltinExtensions = this.environmentService.options && Array.isArray(this.environmentService.options.additionalBuiltinExtensions) ? this.environmentService.options.additionalBuiltinExtensions : [];
		const extensionIds: string[] = [], extensionLocations: URI[] = [], result: IExtension[] = [];
		for (const e of customBuiltinExtensions) {
			if (isString(e)) {
				extensionIds.push(e);
			} else {
				extensionLocations.push(URI.revive(e));
			}
		}

		await Promise.allSettled([
			(async () => {
				if (extensionLocations.length) {
					await Promise.allSettled(extensionLocations.map(async location => {
						try {
							const webExtension = await this.toWebExtensionFromLocation(location);
							result.push(await this.toExtension(webExtension, true));
						} catch (error) {
							this.logService.info(`Error while fetching the additional builtin extension ${location.toString()}.`, getErrorMessage(error));
						}
					}));
				}
			})(),
			(async () => {
				if (extensionIds.length) {
					try {
						result.push(...await this.getCustomBuiltinExtensionsFromGallery(extensionIds));
					} catch (error) {
						this.logService.info('Ignoring following additional builtin extensions as there is an error while fetching them from gallery', extensionIds, getErrorMessage(error));
					}
				}
			})(),
		]);

		return result;
	}