initial implementation of uv_promise_t