mirror of
https://github.com/JonasunderscoreJones/aka-worker.git
synced 2025-10-23 09:59:19 +02:00
29 lines
No EOL
771 B
JavaScript
29 lines
No EOL
771 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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.
|
|
*/
|
|
exports.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
|