| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.retryWhen = void 0; |
| var innerFrom_1 = require("../observable/innerFrom"); |
| var Subject_1 = require("../Subject"); |
| var lift_1 = require("../util/lift"); |
| var OperatorSubscriber_1 = require("./OperatorSubscriber"); |
| function retryWhen(notifier) { |
| return lift_1.operate(function (source, subscriber) { |
| var innerSub; |
| var syncResub = false; |
| var errors$; |
| var subscribeForRetryWhen = function () { |
| innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) { |
| if (!errors$) { |
| errors$ = new Subject_1.Subject(); |
| innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { |
| return innerSub ? subscribeForRetryWhen() : (syncResub = true); |
| })); |
| } |
| if (errors$) { |
| errors$.next(err); |
| } |
| })); |
| if (syncResub) { |
| innerSub.unsubscribe(); |
| innerSub = null; |
| syncResub = false; |
| subscribeForRetryWhen(); |
| } |
| }; |
| subscribeForRetryWhen(); |
| }); |
| } |
| exports.retryWhen = retryWhen; |
| //# sourceMappingURL=retryWhen.js.map |