I came across an edgecase where send_datagram_wait blocks indefinitely during a benchmark.
It happens when the path MTU changes and oversized packets are dropped.
Dropping packets in the outgoing queue should unblock callers of send_datagram_wait that are waiting for Event::DatagramsUnblocked.
If no datagram can be sent e.g. because all packets in the outgoing queue were too large for max_payload then the callers will wait forever.