await callWithTelemetryAndErrorHandling()

in src/extension.ts [58:119]


    await callWithTelemetryAndErrorHandling('docker.activate', async (activateContext: IActionContext) => {
        activateContext.errorHandling.rethrow = true;
        activateContext.telemetry.properties.isActivationEvent = 'true';
        activateContext.telemetry.measurements.mainFileLoad = (perfStats.loadEndTime - perfStats.loadStartTime) / 1000;
        activateContext.telemetry.properties.dockerInstallationIDHash = await getDockerInstallationIDHash();

        // All of these internally handle telemetry opt-in
        ext.activityMeasurementService = new ActivityMeasurementService(ctx.globalState);

        let targetPopulation: tas.TargetPopulation;
        if (process.env.DEBUGTELEMETRY || process.env.VSCODE_DOCKER_TEAM === '1') {
            targetPopulation = tas.TargetPopulation.Team;
        } else if (/alpha/ig.test(extensionVersion.value)) {
            targetPopulation = tas.TargetPopulation.Insiders;
        } else {
            targetPopulation = tas.TargetPopulation.Public;
        }
        ext.experimentationService = await createExperimentationService(ctx, targetPopulation);

        // Temporarily disabled--reenable if we need to do any surveys
        // (new SurveyManager()).activate();

        // Remove the "Report Issue" button from all error messages in favor of the command
        // TODO: use built-in issue reporter if/when support is added to include arbitrary info in addition to repro steps (which we would leave blank to force the user to type *something*)
        registerErrorHandler(ctx => ctx.errorHandling.suppressReportIssue = true);
        registerReportIssueCommand('vscode-docker.help.reportIssue');

        ctx.subscriptions.push(
            vscode.languages.registerCompletionItemProvider(
                DOCUMENT_SELECTOR,
                new DockerfileCompletionItemProvider(),
                '.'
            )
        );

        ctx.subscriptions.push(ext.dockerContextManager = new DockerContextManager());
        // At initialization we need to force a refresh since the filesystem watcher would have no reason to trigger
        // No need to wait thanks to ContextLoadingClient
        void ext.dockerContextManager.refresh();

        ctx.subscriptions.push(
            vscode.workspace.registerFileSystemProvider(
                'docker',
                new ContainerFilesProvider(() => ext.dockerClient),
                {
                    // While Windows containers aren't generally case-sensitive, Linux containers are and make up the overwhelming majority of running containers.
                    isCaseSensitive: true,
                    isReadonly: false
                })
        );

        registerTrees();
        registerCommands();

        registerDebugProvider(ctx);
        registerTaskProviders(ctx);

        activateDockerfileLanguageClient(ctx);
        activateComposeLanguageClient(ctx);

        registerListeners();
    });