It turns out, the issue is the read size. Even though the file is one byte, I need to ask for 4K and only get back one byte. Here is the same example working by changing cb.aio_nbytes on line 111: wandbox.org/permlink/HgMjLPeQoPlgxarn