pakoito
suspend fun <A, B> Either<Throwable, A>.mapEffectMigration(f: suspend (A) -> B): Either<Throwable, A> = fold(::Left) { Either.catch { f(it) } }