Have you considered using a library like Zig-aio: lightweight abstraction over io_uring and coroutines ?