| /** PURE_IMPORTS_START tslib,_Subject,_innerSubscribe PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subject } from '../Subject'; | 
| import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe'; | 
| export function retryWhen(notifier) { | 
|     return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); }; | 
| } | 
| var RetryWhenOperator = /*@__PURE__*/ (function () { | 
|     function RetryWhenOperator(notifier, source) { | 
|         this.notifier = notifier; | 
|         this.source = source; | 
|     } | 
|     RetryWhenOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source)); | 
|     }; | 
|     return RetryWhenOperator; | 
| }()); | 
| var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(RetryWhenSubscriber, _super); | 
|     function RetryWhenSubscriber(destination, notifier, source) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.notifier = notifier; | 
|         _this.source = source; | 
|         return _this; | 
|     } | 
|     RetryWhenSubscriber.prototype.error = function (err) { | 
|         if (!this.isStopped) { | 
|             var errors = this.errors; | 
|             var retries = this.retries; | 
|             var retriesSubscription = this.retriesSubscription; | 
|             if (!retries) { | 
|                 errors = new Subject(); | 
|                 try { | 
|                     var notifier = this.notifier; | 
|                     retries = notifier(errors); | 
|                 } | 
|                 catch (e) { | 
|                     return _super.prototype.error.call(this, e); | 
|                 } | 
|                 retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this)); | 
|             } | 
|             else { | 
|                 this.errors = undefined; | 
|                 this.retriesSubscription = undefined; | 
|             } | 
|             this._unsubscribeAndRecycle(); | 
|             this.errors = errors; | 
|             this.retries = retries; | 
|             this.retriesSubscription = retriesSubscription; | 
|             errors.next(err); | 
|         } | 
|     }; | 
|     RetryWhenSubscriber.prototype._unsubscribe = function () { | 
|         var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription; | 
|         if (errors) { | 
|             errors.unsubscribe(); | 
|             this.errors = undefined; | 
|         } | 
|         if (retriesSubscription) { | 
|             retriesSubscription.unsubscribe(); | 
|             this.retriesSubscription = undefined; | 
|         } | 
|         this.retries = undefined; | 
|     }; | 
|     RetryWhenSubscriber.prototype.notifyNext = function () { | 
|         var _unsubscribe = this._unsubscribe; | 
|         this._unsubscribe = null; | 
|         this._unsubscribeAndRecycle(); | 
|         this._unsubscribe = _unsubscribe; | 
|         this.source.subscribe(this); | 
|     }; | 
|     return RetryWhenSubscriber; | 
| }(SimpleOuterSubscriber)); | 
| //# sourceMappingURL=retryWhen.js.map |