Directly use ZIO and its wonderful explicit error type,
or abstract over the effect type with a F[_] + cats-effect type-classes and lose the error in the type?
cc @jdegoes
Only the fact of knowing that you already handled the errors, because you have a UIO[T], is priceless.
That's mainly because Sync[F] extends MonadError[F, Throwable], so you are stick with Throwables if your F is a Sync.