"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.catchError = void 0; var innerFrom_1 = require("../observable/innerFrom"); var OperatorSubscriber_1 = require("./OperatorSubscriber"); var lift_1 = require("../util/lift"); function catchError(selector) { return lift_1.operate(function (source, subscriber) { var innerSub = null; var syncUnsub = false; var handledResult; innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) { handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source))); if (innerSub) { innerSub.unsubscribe(); innerSub = null; handledResult.subscribe(subscriber); } else { syncUnsub = true; } })); if (syncUnsub) { innerSub.unsubscribe(); innerSub = null; handledResult.subscribe(subscriber); } }); } exports.catchError = catchError; //# sourceMappingURL=catchError.js.map