libuv will only fill a buffer between callinhg to uv_alloc and uv_read_cb, and will not make any other call (or return) during that time