retryInfiniteWhenSyncIs

suspend fun StateFlow<SyncState>.retryInfiniteWhenSyncIs(syncState: SyncState, vararg moreSyncStates: SyncState, scheduleBase: Duration = 100.milliseconds, scheduleFactor: Double = 2.0, scheduleLimit: Duration = 5.minutes, onError: suspend (error: Throwable) -> Unit = {}, onCancel: suspend () -> Unit = {}, block: suspend () -> Unit)