src/vs/platform/request/node/requestService.ts/RequestService/request
class RequestService:	async request(options: NodeRequestOptions, token: CancellationToken): Promise<IRequestContext> {
		this.logService.trace('RequestService#request (node) - begin', options.url);

		const { proxyUrl, strictSSL } = this;

		let shellEnv: typeof process.env | undefined = undefined;
		try {
			shellEnv = await getResolvedShellEnv(this.logService, this.environmentService.args, process.env);
		} catch (error) {
			if (!this.shellEnvErrorLogged) {
				this.shellEnvErrorLogged = true;
				this.logService.error('RequestService#request (node) resolving shell environment failed', error);
			}
		}

		const env = {
			...process.env,
			...shellEnv
		};
		const agent = options.agent ? options.agent : await getProxyAgent(options.url || '', env, { proxyUrl, strictSSL });

		options.agent = agent;
		options.strictSSL = strictSSL;

		if (this.authorization) {
			options.headers = {
				...(options.headers || {}),
				'Proxy-Authorization': this.authorization
			};
		}

		try {
			const res = await this._request(options, token);

			this.logService.trace('RequestService#request (node) - success', options.url);

			return res;
		} catch (error) {
			this.logService.trace('RequestService#request (node) - error', options.url, error);

			throw error;
		}
	}