src/vs/workbench/services/workingCopy/browser/workingCopyBackupTracker.ts/BrowserWorkingCopyBackupTracker/onBeforeShutdown
class BrowserWorkingCopyBackupTracker:	protected onBeforeShutdown(reason: ShutdownReason): boolean | Promise<boolean> {

		// Web: we cannot perform long running in the shutdown phase
		// As such we need to check sync if there are any dirty working
		// copies that have not been backed up yet and then prevent the
		// shutdown if that is the case.

		const dirtyWorkingCopies = this.workingCopyService.dirtyWorkingCopies;
		if (!dirtyWorkingCopies.length) {
			return false; // no dirty: no veto
		}

		if (!this.filesConfigurationService.isHotExitEnabled) {
			return true; // dirty without backup: veto
		}

		for (const dirtyWorkingCopy of dirtyWorkingCopies) {
			if (!this.workingCopyBackupService.hasBackupSync(dirtyWorkingCopy, this.getContentVersion(dirtyWorkingCopy))) {
				this.logService.warn('Unload veto: pending backups');

				return true; // dirty without backup: veto
			}
		}

		return false; // dirty with backups: no veto
	}