timeout method
Creates an IO that returns the value of this IO, or raises an error
if the evaluation take longer than duration
.
Implementation
IO<A> timeout(Duration duration) => timeoutTo(
duration,
IO.defer(() => IO.raiseError(
RuntimeException(TimeoutException(duration.toString())))));