Не уверен, как выглядит ваш код, но я думаю, что этот подход должен работать:
src$.pipe(
retryWhen(
errSbj => errSbj.pipe(
delay(/* ... */),
take(5),
// Until it receives a `COMPLETED` status
takeUntil(statusCompleted$)
)
)
)
Когда statusCompleted$
испускает, весь поток будет complete
.