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 { export class Disposables {
constructor() { constructor() {
this._disposables = []; this._disposables = [];
@ -31,6 +35,9 @@ export class Disposables {
if (this.isDisposed) { if (this.isDisposed) {
throw new Error("Already disposed, check isDisposed after await if needed"); throw new Error("Already disposed, check isDisposed after await if needed");
} }
if (!isDisposable(disposable)) {
throw new Error("Not a disposable");
}
this._disposables.push(disposable); this._disposables.push(disposable);
return disposable; return disposable;
} }