@bnoordhuis Your approach makes sense and I changed it to work this way, only it is not working as you suggest. I have a stand-alone test app here: https://gist.github.com/apaprocki/5671990

Basically, if the timer timeout is > 0ms, a single `uv_run()` with `UV_RUN_ONCE` exits without calling the timer callback. If I add a second `uv_run()` with `UV_RUN_ONCE`, the timer callback is now called, but it breaks the opposite cases where the async is signalled first or if the timer timeout is 0ms.

Am I missing something here? I would expect that with a timeout of 50ms, a single `UV_RUN_ONCE` would call the callback and exit after ~50ms.