Can't the rethrowing logic be expressed using `fmap`?
λ :set -XTypeApplications
λ :t fmap @ (Either Error)
fmap @ (Either Error) :: (a -> b) -> Either Error a -> Either Error b