import { innerFrom } from '../observable/innerFrom'; import { createOperatorSubscriber } from './OperatorSubscriber'; import { operate } from '../util/lift'; export function catchError(selector) { return operate(function (source, subscriber) { var innerSub = null; var syncUnsub = false; var handledResult; innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) { handledResult = 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); } }); } //# sourceMappingURL=catchError.js.map