throw when something tracked is not disposable, fail early

This commit is contained in:
Bruno Windels 2020-10-09 17:01:54 +02:00
parent 1289f065d6
commit 3ab68ef438

View File

@ -22,6 +22,10 @@ function disposeValue(value) {
}
}
function isDisposable(value) {
return value && (typeof value === "function" || typeof value.dispose === "function");
}
export class Disposables {
constructor() {
this._disposables = [];
@ -31,6 +35,9 @@ export class Disposables {
if (this.isDisposed) {
throw new Error("Already disposed, check isDisposed after await if needed");
}
if (!isDisposable(disposable)) {
throw new Error("Not a disposable");
}
this._disposables.push(disposable);
return disposable;
}