On Tue, Jun 2, 2020 at 2:58 PM Paul Winalski <paul.winalski@gmail.com> wrote:
I think that's a very good question.  It's analogous to
record-oriented I/O vs. byte stream I/O.  It's easy to build
record-oriented I/O on top of a byte stream, but it's a real bear to
do it the other way around.  Similarly, it's easy to build synchronous
I/O on top of asynchronous I/O but the reverse ends up looking contrived.
Which was exactly the point I tried to make in the POSIX.4 discussions, but it does take more work in the basic housekeeping and you need a way to handle events and completions that are priority based, queued, and a few other details.   As Doug said, they stayed away from some features (like messaging).   async I/O was one of them. 

But as I said, Ken, Dennis and the rest of the crew did an amazing job with very little.