This should block and wait for the callback to get invoked. Generally this low-level management of uv primitives should be done in `uvio` and not in `rt::io`