import { CancellationToken } from "vscode"; export function withCancellation(promise: Promise, cancellationToken: CancellationToken, result: T): Promise { return new Promise((resolve, reject) => { const cancellationListener = cancellationToken.onCancellationRequested(() => { cancellationListener.dispose(); resolve(result); }); promise.then(resolve, reject).finally(() => cancellationListener.dispose()); }); }