@lifaon/rx-js-light
Version:
Blazing fast Observables
46 lines (45 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.asyncUnsubscribePromise = exports.asyncUnsubscribe = exports.DEFAULT_ON_ERROR_FOR_ASYNC_UNSUBSCRIBE = void 0;
var is_reference_error_1 = require("../errors/reference-error/is-reference-error.cjs");
var noop_1 = require("./noop.cjs");
var DEFAULT_ON_ERROR_FOR_ASYNC_UNSUBSCRIBE = function (error) {
throw error;
};
exports.DEFAULT_ON_ERROR_FOR_ASYNC_UNSUBSCRIBE = DEFAULT_ON_ERROR_FOR_ASYNC_UNSUBSCRIBE;
function asyncUnsubscribe(getUnsubscribe, onSuccess, onError) {
if (onSuccess === void 0) {
onSuccess = noop_1.noop;
}
if (onError === void 0) {
onError = exports.DEFAULT_ON_ERROR_FOR_ASYNC_UNSUBSCRIBE;
}
var unsubscribe;
try {
unsubscribe = getUnsubscribe();
} catch (error) {
if ((0, is_reference_error_1.isReferenceError)(error)) {
queueMicrotask(function () {
try {
getUnsubscribe()();
} catch (error) {
onError(error);
}
});
} else {
onError(error);
}
return;
}
unsubscribe();
onSuccess();
}
exports.asyncUnsubscribe = asyncUnsubscribe;
function asyncUnsubscribePromise(getUnsubscribe) {
return new Promise(function (resolve, reject) {
asyncUnsubscribe(getUnsubscribe, resolve, reject);
});
}
exports.asyncUnsubscribePromise = asyncUnsubscribePromise;