Why do you prefer IO over Future?
Everyone is always saying future is terrible. But the number of times I have had a future-related bug in 5 years of using it: 0.
as far as I know there's no practical difference between the two except Future is eager, and IO may or may not be eager. And you can reuse IOs.
The number of times I have wanted to explicitly reuse an IO: 0.
Number of times I have had a bug because some IO was eager instead of lazy: 1.
Relying on future as a first class citizen also means you're relying on the scala devs rather than cats-effect devs to dictate your run time which sounds better to me?
Monads etc all still work fine with Future even if they're not strictly lawful.
For context I just do standard web-dev. Considering pekko or http4s for the next project.
What am I missing exactly? Convince me one way or the other!