src/vs/workbench/contrib/surveys/browser/ces.contribution.ts/CESContribution/promptUser
class CESContribution:	private async promptUser() {
		const sendTelemetry = (userReaction: 'accept' | 'remindLater' | 'neverShowAgain' | 'cancelled') => {
			/* __GDPR__
			"cesSurvey:popup" : {
				"userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
			}
			*/
			this.telemetryService.publicLog('cesSurvey:popup', { userReaction });
		};

		const message = await this.tasExperimentService?.getTreatment<string>('CESSurveyMessage') ?? nls.localize('cesSurveyQuestion', 'Got a moment to help the VS Code team? Please tell us about your experience with VS Code so far.');
		const button = await this.tasExperimentService?.getTreatment<string>('CESSurveyButton') ?? nls.localize('giveFeedback', "Give Feedback");

		const notification = this.notificationService.prompt(
			Severity.Info,
			message,
			[{
				label: button,
				run: () => {
					sendTelemetry('accept');
					this.telemetryService.getTelemetryInfo().then(info => {
						let surveyUrl = `${this.productService.cesSurveyUrl}?o=${encodeURIComponent(platform)}&v=${encodeURIComponent(this.productService.version)}&m=${encodeURIComponent(info.machineId)}`;

						const usedParams = this.productService.surveys
							?.filter(surveyData => surveyData.surveyId && surveyData.languageId)
							// Counts provided by contrib/surveys/browser/languageSurveys
							.filter(surveyData => this.storageService.getNumber(`${surveyData.surveyId}.editedCount`, StorageScope.GLOBAL, 0) > 0)
							.map(surveyData => `${encodeURIComponent(surveyData.languageId)}Lang=1`)
							.join('&');
						if (usedParams) {
							surveyUrl += `&${usedParams}`;
						}
						this.openerService.open(URI.parse(surveyUrl));
						this.skipSurvey();
					});
				}
			}, {
				label: nls.localize('remindLater', "Remind Me later"),
				run: () => {
					sendTelemetry('remindLater');
					this.storageService.store(REMIND_LATER_DATE_KEY, new Date().toUTCString(), StorageScope.GLOBAL, StorageTarget.USER);
					this.schedulePrompt();
				}
			}],
			{
				sticky: true,
				onCancel: () => {
					sendTelemetry('cancelled');
					this.skipSurvey();
				}
			}
		);

		await Event.toPromise(notification.onDidClose);
	}