Completion wait can timeout and go away without extra server call. Waiting thread can also be killed. With generic event the server has no way of knowing which threads are waiting but it has to know and assign completion to thread transactionally with completing wait. Without breaking this logic badly (only slightly) it is maybe possible to do somehow but it is going to be hard and complicated. Why would we need to rush this approach, given we are not even going to get rid of server calls for completion wait? IMO the only good way is yo implement completion queue in keenel ntsync first. But before that we’d probably want to test and implement thread count limit for completion ports in wineserver.