ts-raii-scope
Version:
TypeScript RAII proof of concept
27 lines (26 loc) • 868 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function isPromise(obj) {
return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
}
exports.isPromise = isPromise;
function isDisposable(resource) {
return resource && typeof resource.dispose === 'function';
}
exports.isDisposable = isDisposable;
function safeDisposeResource(resource) {
try {
const result = resource.dispose();
if (isPromise(result)) {
return result.catch(error => {
console.warn(`Resource's dispose() promise rejected. Reason:`);
console.info(error);
});
}
}
catch (error) {
console.warn(`Resource's dispose() throws error`);
console.info(error);
}
}
exports.safeDisposeResource = safeDisposeResource;