Moonpool_lwt.IOSourceIO using the Lwt event loop.
These IO operations work on non-blocking file descriptors and rely on a Lwt_engine event loop being active (meaning, Lwt_main.run is currently running in some thread).
Calling these functions must be done from a moonpool runner. A function like read will first try to perform the IO action directly (here, call Unix.read); if the action fails because the FD is not ready, then await_readable is called: it suspends the fiber and subscribes it to Lwt to be awakened when the FD becomes ready.
Read from the file descriptor
Suspend the fiber until the FD is readable
Perform one write into the file descriptor
Suspend the fiber until the FD is writable
Loop around write_once to write the entire slice.
Suspend the fiber for n seconds.