Fair enough. If you know well what your exact scenario is, then perhaps you can guarantee a very low probability of blocking
In general, though, there are extreme cases like NFS, where read can block for an unpredictable amount of time.
Besides Async_none, you can also mess with this on a per-fd basis. If you call
Lwt_unix.set_blocking ~set_flags:false fd false
it will tell Lwt that the file descriptor is in non-blocking mode, without Lwt making any effort to actually set O_NONBLOCK on it (not that it matters for regular files). This will cause Lwt to run I/O on that file descriptor directly in the main thread. I don’t claim this is a good idea, or future-proof – but it is there 