reduce number of system calls on Linux
The way epoll is used currently is to cancel the event after a notify. This can be optimised to only cancel the event if there is no new wait: this saves a kernel call per event, and will probably reduce latency.