retryLoop

suspend fun StateFlow<SyncState>.retryLoop(delayConfigWhenSyncRunning: RetryFlowDelayConfig = RetryFlowDelayConfig().copy(scheduleLimit = 10.seconds), delayConfigWhenSyncNotRunning: RetryFlowDelayConfig = RetryFlowDelayConfig(), onError: suspend (error: Throwable, delay: Duration) -> Unit = { _, _ -> }, block: suspend () -> Unit)