I think the wonky `uv_now(uv_default_loop()) >= start_time + 500` check can be dropped altogether.  Same for the 700 ms check at the bottom of the file, you'll probably hit that sooner or later too.