This is what I see going on:

`uv_run()` calls `uv__run_timers()` *before* calling `uv__io_poll()`, which is used to implement the timeouts. (In the OSX case, `kevent()`) This means that all the first pass through the loop does is wait for the specified timeout and it isn't until the second pass that the timer callback will be fired prior to the next poll.

It seems to me that the timers need to be run both before and after `uv__io_poll()`. I think they still need to be run before poll because you don't want an already expired timer (e.g. 0ms timer) to wait to fire until the next event/timeout happens.

Perhaps you only want to run them after the poll when in `(UV_RUN_ONCE | UV_RUN_NOWAIT)`?