Used to chain multiple functions that return a IO.
@override IO<B> flatMap<B>(covariant IO<B> Function(A a) f) => IO(() => f(run()).run());