Create some kind of API that iterates over received data chunks, which would allow us to use multi-shot operation in the OS-level APIs. It would also make it possible to have receives as part of select.