use
block ( value => ...
)
race
an IO
against the one which is actually doing the work
IO
is defined by IO.never
with an onCancel
that allows you to call things
(fa: F[A]).recoverSomeT[E2]( e: E => ???: E2 )
=> EitherT[F, E2, A]
blocking { ... }
.
lazy val
lazy val
intentionally these days are when constructing infinite recursive effects
def
instead but it cuts down on the allocations
Semaphore