Spaces:
Configuration error
Configuration error
const isPromiseLike = (value) => typeof value === 'object' && !!value && 'then' in value; | |
/** | |
* A helper function that calls `.dispose()` on the {@link IDisposable} when | |
* the given function (or promise returned by the function) returns. | |
*/ | |
export const using = (disposable, fn) => { | |
let ret; | |
try { | |
ret = fn(disposable); | |
} | |
catch (e) { | |
disposable.dispose(); | |
throw e; | |
} | |
if (!isPromiseLike(ret)) { | |
disposable.dispose(); | |
return ret; | |
} | |
return ret.then(value => { | |
disposable.dispose(); | |
return value; | |
}, err => { | |
disposable.dispose(); | |
throw err; | |
}); | |
}; | |
//# sourceMappingURL=disposable.js.map |