orElse take a LazyArg<Effect> as the fallback, instead of just an Effect?flatMap vs zipRight, one takes the result of the previous effect, so requires a function. Where the other is independent so it does not.catchAll vs orElse. Catch all of course requires a function to get the error from the previous effect, but why is the orElse fallback effect lazy?