internal async Task InitAsync(TerminalScriptingObject scriptingObject, CancellationToken cancellationToken)
        {
            await this.package.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            var tcs = new TaskCompletionSource <object>();

            void TerminalInitHandler(object sender, TermInitEventArgs e) => tcs.TrySetResult(null);

            scriptingObject.TerminalInit += TerminalInitHandler;
            try
            {
                VSColorTheme.ThemeChanged += VSColorTheme_ThemeChanged;

                this.terminalView.ScriptingObject = scriptingObject;

                string extensionDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                string rootPath           = Path.Combine(extensionDirectory, "WebView\\default.html").Replace("\\\\", "\\");
                this.terminalView.Navigate(new Uri(rootPath));

                using (var registration = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken)))
                {
                    await tcs.Task;
                }
            }
            finally
            {
                scriptingObject.TerminalInit -= TerminalInitHandler;
            }

            if (this.pendingFocus)
            {
                this.terminalView.Invoke("triggerEvent", "focus");
                this.pendingFocus = false;
            }
        }
 internal Task InitAsync(TerminalScriptingObject scriptingObject, CancellationToken cancellationToken) =>
 ((TermWindowControl)Content).InitAsync(scriptingObject, cancellationToken);