In a real application, we would not be returning a value instantly from an asynchronous function that directly returns Async::Ready<T> or FutureResult<T, E>. Network requests time out, buffers become full, services become unavailable due to bugs or outages, and many more issues pop up on a daily basis. As much as we like to build order from chaos, usually chaos wins due to naturally-occurring entropy (programmers may know this as scope creep) and decay (software updates, new computer science paradigms, and so on). Luckily for us, the futures library offers us a simple way to implement error handling.





















































