epoll (Linux) и kqueue (BSD/macOS) - механизмы мультиплексирования I/O: один поток ждет события на множестве дескрипторов. В Go netpoller абстрагирует это: горутина блокируется на Read/Write, runtime регистрирует дескриптор в netpoller и переключает горутину на другую; при готовности I/O горутина возобновляется. Пользовательский код синхронный (блокирующий вызов), под капотом асинхронность.