src/vs/workbench/services/remote/electron-sandbox/remoteAgentServiceImpl.ts/RemoteConnectionFailureNotificationContribution/constructor
class RemoteConnectionFailureNotificationContribution:	constructor(
		@IRemoteAgentService remoteAgentService: IRemoteAgentService,
		@INotificationService notificationService: INotificationService,
		@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService,
		@ITelemetryService telemetryService: ITelemetryService,
	) {
		// Let's cover the case where connecting to fetch the remote extension info fails
		remoteAgentService.getRawEnvironment()
			.then(undefined, err => {

				type RemoteConnectionFailureClassification = {
					web: { classification: 'SystemMetaData', purpose: 'PerformanceAndHealth' };
					remoteName: { classification: 'SystemMetaData', purpose: 'PerformanceAndHealth' };
					message: { classification: 'SystemMetaData', purpose: 'PerformanceAndHealth' };
				};
				type RemoteConnectionFailureEvent = {
					web: boolean;
					remoteName: string | undefined;
					message: string;
				};
				telemetryService.publicLog2<RemoteConnectionFailureEvent, RemoteConnectionFailureClassification>('remoteConnectionFailure', {
					web: false,
					remoteName: getRemoteName(environmentService.remoteAuthority),
					message: err ? err.message : '',
				});

				if (!RemoteAuthorityResolverError.isHandled(err)) {
					notificationService.error(nls.localize('connectionError', "Failed to connect to the remote extension host server (Error: {0})", err ? err.message : ''));
				}
			});
	}