Fwiw this could probably use NtWaitForMultipleObjects too.
It can, although `NtWaitForMultipleObjects` takes `HANDLE`s but we get `obj_handle_t`s from the server, and doing the (trivial) conversion looks a bit awkward.
Or alternatively maybe, we could perhaps introduce a new select op that cancels and wait for objects?
That would avoid that particular issue as well, I guess. Not sure how much use it would get but I'm going to give it a go and see how it looks.