--- /dev/null
+import { OuterSubscriber } from '../OuterSubscriber';
+import { InnerSubscriber } from '../InnerSubscriber';
+import { subscribeToResult } from '../util/subscribeToResult';
+export function catchError(selector) {
+ return function catchErrorOperatorFunction(source) {
+ const operator = new CatchOperator(selector);
+ const caught = source.lift(operator);
+ return (operator.caught = caught);
+ };
+}
+class CatchOperator {
+ constructor(selector) {
+ this.selector = selector;
+ }
+ call(subscriber, source) {
+ return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));
+ }
+}
+class CatchSubscriber extends OuterSubscriber {
+ constructor(destination, selector, caught) {
+ super(destination);
+ this.selector = selector;
+ this.caught = caught;
+ }
+ error(err) {
+ if (!this.isStopped) {
+ let result;
+ try {
+ result = this.selector(err, this.caught);
+ }
+ catch (err2) {
+ super.error(err2);
+ return;
+ }
+ this._unsubscribeAndRecycle();
+ const innerSubscriber = new InnerSubscriber(this, undefined, undefined);
+ this.add(innerSubscriber);
+ const innerSubscription = subscribeToResult(this, result, undefined, undefined, innerSubscriber);
+ if (innerSubscription !== innerSubscriber) {
+ this.add(innerSubscription);
+ }
+ }
+ }
+}
+//# sourceMappingURL=catchError.js.map
\ No newline at end of file