```purchaseFlowStore .getTransaction(t...
# rx
o
Copy code
purchaseFlowStore
            .getTransaction(transactionId)
            .takeUntil { it.state == "done" || it.state == "error" || it.state == "authorized" }
            .doOnError {
                logger.debug("TransactionInfo error! $it")
            }
            .repeatWhen { Observable.timer(5, TimeUnit.SECONDS) }
            .viewModelSubscription({
                logger.debug("TransactionInfo is ${it.state}")

                when (it.state) {
                    "done", "authorized" -> {
                        getOrder()
                    }
                    "error" -> {
                        ShowRequestFailedDialog()
                    }
                }
            }, {
                logger.debug("TransactionInfo error! $it")
            })
s
Your repeatWhen needs to react to onComplete events, and not just start its own timer.
.repeatWhen { completed -> completed.delay(5, TimeUnit.SECONDS) }
or
Copy code
.repeatWhen { completed -> 
   completed.flatMap { Observable.timer(5, TimeUnit.SECONDS) } 
}