intermediate
Arrow aims to enhance the user experience when using RxJava. While providing other datatypes that are capable of handling effects, like IO, the style of programming encouraged by the library allows users to generify behavior for any existing abstractions.
One of such abstractions is RxJava, a library focused on providing composable streams that enable reactive programming. Observable streams are created by chaining operators into what are called observable chains.
Observable.from(7, 4, 11, 3)
.map { it + 1 }
.filter { it % 2 == 0 }
.scan { acc, value -> acc + value }
.toList()
.subscribeOn(Schedulers.computation())
.blockingFirst()
//[8, 20, 24]
The largest quality of life improvement when using Observables in Arrow is the introduction of the Monad Comprehension. This library construct allows expressing asynchronous Observable sequences as synchronous code using binding/bind.
To wrap any existing Observable in its Arrow Wrapper counterpart you can use the extension function k()
.
import arrow.fx.rx2.*
import io.reactivex.*
import io.reactivex.subjects.*
val obs = Observable.fromArray(1, 2, 3, 4, 5).k()
obs
// ObservableK(observable=io.reactivex.internal.operators.observable.ObservableFromArray@2d35ceac)
val flow = Flowable.fromArray(1, 2, 3, 4, 5).k()
flow
// FlowableK(flowable=io.reactivex.internal.operators.flowable.FlowableFromArray@311b1fff)
val single = Single.fromCallable { 1 }.k()
single
// SingleK(single=io.reactivex.internal.operators.single.SingleFromCallable@39f1cf6e)
val maybe = Maybe.fromCallable { 1 }.k()
maybe
// MaybeK(maybe=io.reactivex.internal.operators.maybe.MaybeFromCallable@4a7d7fef)
val subject = PublishSubject.create<Int>().k()
subject
// ObservableK(observable=io.reactivex.subjects.PublishSubject@33c95ad4)
You can return to their regular forms using the function value()
.
obs.value()
// io.reactivex.internal.operators.observable.ObservableFromArray@2d35ceac
flow.value()
// io.reactivex.internal.operators.flowable.FlowableFromArray@311b1fff
single.value()
// io.reactivex.internal.operators.single.SingleFromCallable@39f1cf6e
maybe.value()
// io.reactivex.internal.operators.maybe.MaybeFromCallable@4a7d7fef
subject.value()
// io.reactivex.subjects.PublishSubject@33c95ad4
Arrow adds a new constructor effect
that allows using suspend functions with Observable
, Single
, and Flowable
.
suspend fun sideEffect(): Unit = println("Hello!")
ObservableK.async().effect {
sideEffect()
}
SingleK.async().effect {
sideEffect()
}
FlowableK.async().effect {
sideEffect()
}
The library provides instances of MonadError
and MonadDefer
.
Async
allows you to generify over datatypes that can run asynchronous code. You can use it with ObservableK
, FlowableK
or SingleK
.
fun <F> getSongUrlAsync(MS: MonadDefer<F>) =
MS { getSongUrl() }
val songObservable: ObservableKOf<Url> = getSongUrlAsync(ObservableK.monadDefer())
val songFlowable: FlowableKOf<Url> = getSongUrlAsync(FlowableK.monadDefer())
val songSingle: SingleKOf<Url> = getSongUrlAsync(SingleK.monadDefer())
val songMaybe: MaybeKOf<Url> = getSongUrlAsync(MaybeK.monadDefer())
Monad
can be used to start a Monad Comprehension using the method fx
, with all its benefits.
Let’s take an example and convert it to a comprehension. We’ll create an observable that loads a song from a remote location, and then reports the current play % every 100 milliseconds until the percentage reaches 100%:
getSongUrlAsync()
.map { songUrl -> MediaPlayer.load(songUrl) }
.flatMap {
val totalTime = musicPlayer.getTotaltime()
Observable.interval(100, Milliseconds)
.flatMap {
Observable.create { musicPlayer.getCurrentTime() }
.subscribeOn(AndroidSchedulers.mainThread())
.map { tick -> (tick / totalTime * 100).toInt() }
}
.takeUntil { percent -> percent >= 100 }
.observeOn(Schedulers.immediate())
}
When rewritten using fx
it becomes:
import arrow.fx.rx2.*
import arrow.fx.rx2.extensions.fx
import io.reactivex.Observable
import io.reactivex.subjects.PublishSubject
import java.util.concurrent.TimeUnit
ObservableK.fx {
val (songUrl) = getSongUrlAsync()
val musicPlayer = MediaPlayer.load(songUrl)
val totalTime = musicPlayer.getTotaltime()
val end = PublishSubject.create<Unit>()
!Observable.interval(100, TimeUnit.MILLISECONDS).takeUntil(end).k()
val tick = !delay(UI) { musicPlayer.getCurrentTime() }
val percent = (tick / totalTime * 100).toInt()
if (percent >= 100) {
end.onNext(Unit)
}
percent
}
Note that any unexpected exception, like AritmeticException
when totalTime
is 0, is automatically caught and wrapped inside the observable.
Observables created with comprehensions like fx
behave the same way regular observables do, including cancellation by disposing the subscription.
val disposable =
songObservable.value()
.subscribe({ Log.d("Song $it") } , { println("Error $it") })
disposable.dispose()
While MonadDefer
usually guarantees stack safety, this does not apply for the rx2 wrapper types.
This is a limitation on rx2’s side. See the corresponding github issue.
To overcome this limitation and run code in a stack safe way, one can make use of fx.stackSafe
which is provided for every instance of Monad
when you have arrow-free
included.
import arrow.Kind
import arrow.fx.rx2.FlowableK
import arrow.fx.rx2.ForFlowableK
import arrow.fx.rx2.fix
import arrow.fx.rx2.extensions.flowablek.monad.monad
import arrow.free.stackSafe
fun main() {
//sampleStart
// This will not result in a stack overflow
val result = FlowableK.monad().fx.stackSafe {
(1..50000).fold(just(0)) { acc: Kind<ForFlowableK, Int>, x: Int ->
just(acc.bind() + 1)
}.bind()
}.run(FlowableK.monad())
//sampleEnd
println(result.fix().flowable.blockingFirst()!!)
}
import arrow.core.Try
// This will result in a stack overflow
Try {
FlowableK.monad().fx.monad {
(1..50000).fold(just(0)) { acc: Kind<ForFlowableK, Int>, x: Int ->
just(acc.bind() + 1)
}.bind()
}.fix().flowable.blockingFirst()
}
javax.script.ScriptException: java.lang.StackOverflowError
at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:65)
at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at arrow.ank.InterpreterKt$interpreter$1$compileCode$2.invoke(interpreter.kt:176)
at arrow.ank.InterpreterKt$interpreter$1$compileCode$2.invoke(interpreter.kt:85)
at kotlin.sequences.TransformingIndexedSequence$iterator$1.next(Sequences.kt:196)
at arrow.core.SequenceK.foldLeft(SequenceK.kt:88)
at arrow.core.extensions.SequenceKFoldable$DefaultImpls.foldLeft(sequenceK.kt:134)
at arrow.core.extensions.sequence.foldable.SequenceKFoldableKt$foldable_singleton$1.foldLeft(SequenceKFoldable.kt:312)
at arrow.core.extensions.sequence.foldable.SequenceKFoldableKt.foldLeft(SequenceKFoldable.kt:30)
at arrow.ank.InterpreterKt$interpreter$1.replaceAnkToLang(interpreter.kt:222)
at arrow.ank.AnkKt$ank$$inlined$with$lambda$1$5$1$1.invokeSuspend(ank.kt:52)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.signal(IORunLoop.kt:414)
at arrow.fx.IORunLoop$RestartCallback.resumeWith(IORunLoop.kt:445)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:402)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:227)
at arrow.fx.IORunLoop.access$loop(IORunLoop.kt:21)
at arrow.fx.IORunLoop$suspendAsync$1.invoke(IORunLoop.kt:145)
at arrow.fx.IORunLoop$suspendAsync$1.invoke(IORunLoop.kt:21)
at arrow.fx.IORunLoop$RestartCallback.start(IORunLoop.kt:397)
at arrow.fx.IORunLoop.loop(IORunLoop.kt:218)
at arrow.fx.IORunLoop.start(IORunLoop.kt:24)
at arrow.fx.IO.unsafeRunAsync(IO.kt:796)
at arrow.fx.internal.Platform.unsafeResync(Utils.kt:156)
at arrow.fx.IO$Async.unsafeRunTimedTotal$arrow_fx(IO.kt:1017)
at arrow.fx.IO.unsafeRunTimed(IO.kt:862)
at arrow.fx.IO.unsafeRunSync(IO.kt:851)
at arrow.fx.extensions.IOUnsafeRun$DefaultImpls.runBlocking(io.kt:245)
at arrow.fx.extensions.io.unsafeRun.IOUnsafeRunKt$unsafeRun_singleton$1.runBlocking(IOUnsafeRun.kt:21)
at arrow.fx.extensions.io.unsafeRun.IOUnsafeRunKt.runBlocking(IOUnsafeRun.kt:31)
at arrow.ank.main$main$1.invokeSuspend(main.kt:13)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:128)
at arrow.unsafe.invoke(unsafe.kt:30)
at arrow.ank.main.main(main.kt:12)
Module | Type classes |
arrow.fx | Timer |
arrow.fx.typeclasses | Async, Bracket, ConcurrentEffect, Effect, MonadDefer |
arrow.typeclasses | Applicative, ApplicativeError, Foldable, Functor, FunctorFilter, Monad, MonadError, MonadFilter, MonadThrow, Traverse |