src/vs/workbench/api/node/extHostTunnelService.ts/ExtHostTunnelService/$providePortAttributes
class ExtHostTunnelService:	async $providePortAttributes(handles: number[], ports: number[], pid: number | undefined, commandline: string | undefined, cancellationToken: vscode.CancellationToken): Promise<ProvidedPortAttributes[]> {
		const providedAttributes: vscode.ProviderResult<vscode.PortAttributes>[] = [];
		for (const handle of handles) {
			const provider = this._portAttributesProviders.get(handle);
			if (!provider) {
				return [];
			}
			providedAttributes.push(...(await Promise.all(ports.map(async (port) => {
				return provider.provider.providePortAttributes(port, pid, commandline, cancellationToken);
			}))));
		}

		const allAttributes = <vscode.PortAttributes[]>providedAttributes.filter(attribute => !!attribute);

		return (allAttributes.length > 0) ? allAttributes.map(attributes => {
			return {
				autoForwardAction: <ProvidedOnAutoForward><unknown>attributes.autoForwardAction,
				port: attributes.port
			};
		}) : [];
	}