UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

46 lines (45 loc) 1.37 kB
"use strict"; 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;