I'm not even sure why we are still stuck in this debate. Isn't there quite a big consensus that the best way to handle errors is to have everything return an `Either<T, Error>` and having first-class support for monadic types?
Any design that doesn't actually force you to handle the error case cannot be called good in my opinion.
Any design that doesn't actually force you to handle the error case cannot be called good in my opinion.