When doing a read, we could possibly leave the socket fd in the epoll/kqueue system-level queue, so that when the next read request comes, we already knows the readiness. It would require readiness tracking per fd, but I think we need some kind of fd metadata map in ev.Loop anyway. This doesn't translate to io_uring, because that would require another buffer to read into.