diff --git a/lib/vscode/src/vs/server/node/channel.ts b/lib/vscode/src/vs/server/node/channel.ts index 541647a1b..b4c052134 100644 --- a/lib/vscode/src/vs/server/node/channel.ts +++ b/lib/vscode/src/vs/server/node/channel.ts @@ -575,17 +575,17 @@ class Terminal { // type: 'orphan?'; } - public dispose() { + public async dispose() { logger.debug('Terminal disposing', field('id', this.id)); this._onEvent.dispose(); this.bufferer.dispose(); + await this.process.shutdown(true); this.process.dispose(); - this.process.shutdown(true); this._onDispose.fire(); this._onDispose.dispose(); } - public shutdown(immediate: boolean): void { + public shutdown(immediate: boolean): Promise { return this.process.shutdown(immediate); } diff --git a/lib/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts b/lib/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts index 807489956..3794701bf 100644 --- a/lib/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts +++ b/lib/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts @@ -245,9 +245,9 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess this._onProcessTitleChanged.fire(this._currentTitle); } - public shutdown(immediate: boolean): void { + public async shutdown(immediate: boolean): Promise { if (immediate) { - this._kill(); + await this._kill(); } else { this._queueProcessExit(); }