resource

fun <A> resource(acquire: suspend () -> A, release: suspend (A, ExitCase) -> Unit): Resource<A>
fun <A> resource(block: context(ResourceScope) suspend () -> A): Resource<A>