737
*/
738
export function toPromise<T>(event: Event<T>, disposables?: IDisposable[] | DisposableStore): CancelablePromise<T> {
739
>
let cancelRef: () => void;
event.ts
740
>
let listener: IDisposable;
741
>
const promise = new Promise((resolve) => {
742
>
listener = once(event)(resolve);
743
>
addToDisposables(listener, disposables);
744
>
745
>
// not resolved, matching the behavior of a normal disposal
746
>
cancelRef = () => {
747
disposeAndRemove(listener, disposables);
748
};
749
>
}) as CancelablePromise<T>;
event.ts
750
>
promise.cancel = cancelRef!;
751
>
752
>
if (disposables) {
753
promise.finally(() => disposeAndRemove(listener, disposables));
754
}
756
>
return promise;
757
>
}
758
759
/**