src/vs/workbench/services/workingCopy/common/workingCopyBackupTracker.ts/WorkingCopyBackupTracker/discardBackup
class WorkingCopyBackupTracker:	private discardBackup(workingCopy: IWorkingCopy): void {

		// Clear any running backup operation
		this.cancelBackupOperation(workingCopy);

		// Schedule backup discard asap
		const cts = new CancellationTokenSource();
		(async () => {
			this.logService.trace(`[backup tracker] discarding backup`, workingCopy.resource.toString(), workingCopy.typeId);

			// Discard backup
			try {
				await this.workingCopyBackupService.discardBackup(workingCopy, cts.token);
			} catch (error) {
				this.logService.error(error);
			}

			// Clear disposable unless we got canceled which would
			// indicate another operation has started meanwhile
			if (!cts.token.isCancellationRequested) {
				this.pendingBackupOperations.delete(workingCopy);
			}
		})();

		// Keep in map for disposal as needed
		this.pendingBackupOperations.set(workingCopy, toDisposable(() => {
			this.logService.trace(`[backup tracker] clearing pending backup discard`, workingCopy.resource.toString(), workingCopy.typeId);

			cts.dispose(true);
		}));
	}