@@ -80,6 +80,7 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_async(uv_as
8080
8181 NanAssignPersistent (baton->promise , promise);
8282
83+ uv_close ((uv_handle_t *) &baton->req , NULL );
8384 uv_async_init (uv_default_loop (), &baton->req , (uv_async_cb) {{ cppFunctionName }}_{{ cbFunction.name }}_asyncPromisePolling);
8485 uv_async_send (&baton->req );
8586 return ;
@@ -110,7 +111,9 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_async(uv_as
110111 baton->result = {{ cbFunction.return .noResults }};
111112 }
112113 {% endeach %}
114+
113115 baton->done = true ;
116+ uv_close ((uv_handle_t *) &baton->req , NULL );
114117}
115118
116119void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_asyncPromisePolling(uv_async_t * req, int status) {
@@ -120,19 +123,19 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_asyncPromis
120123 Local<Object> promise = NanNew<Object>(baton->promise );
121124 NanCallback* isPendingFn = new NanCallback (promise->Get (NanNew (" isPending" )).As <Function>());
122125 Local<Value> argv[1 ]; // MSBUILD won't assign an array of length 0
123- Local<Boolean> isPending = isPendingFn->Call (0 , argv)->ToBoolean ();
126+ Local<Boolean> isPending = isPendingFn->Call (promise, 0 , argv)->ToBoolean ();
124127
125128 if (isPending->Value ()) {
126129 uv_async_send (&baton->req );
127130 return ;
128131 }
129132
130133 NanCallback* isFulfilledFn = new NanCallback (promise->Get (NanNew (" isFulfilled" )).As <Function>());
131- Local<Boolean> isFulfilled = isFulfilledFn->Call (0 , argv)->ToBoolean ();
134+ Local<Boolean> isFulfilled = isFulfilledFn->Call (promise, 0 , argv)->ToBoolean ();
132135
133136 if (isFulfilled->Value ()) {
134137 NanCallback* resultFn = new NanCallback (promise->Get (NanNew (" value" )).As <Function>());
135- Handle<v8::Value> result = resultFn->Call (0 , argv);
138+ Handle<v8::Value> result = resultFn->Call (promise, 0 , argv);
136139
137140 {% each cbFunction|returnsInfo false true as _return %}
138141 if (result.IsEmpty () || result->IsNativeError ()) {
@@ -165,6 +168,8 @@ void {{ cppClassName }}::{{ cppFunctionName }}_{{ cbFunction.name }}_asyncPromis
165168 baton->result = {{ cbFunction.return .error }};
166169 baton->done = false ;
167170 }
171+
172+ uv_close ((uv_handle_t *) &baton->req , NULL );
168173}
169174 {%endif%}
170175{%endeach%}
0 commit comments