@@ -38,20 +38,22 @@ struct node_napi_env__ : public napi_env__ {
38
38
39
39
void CallFinalizer (napi_finalize cb, void * data, void * hint) override {
40
40
napi_env env = static_cast <napi_env>(this );
41
- node_env ()->SetImmediate ([=](node::Environment* node_env) {
42
- v8::HandleScope handle_scope (env->isolate );
43
- v8::Context::Scope context_scope (env->context ());
44
- env->CallIntoModule ([&](napi_env env) {
45
- cb (env, data, hint);
46
- });
47
- });
41
+ v8::HandleScope handle_scope (env->isolate );
42
+ v8::Context::Scope context_scope (env->context ());
43
+ (napi_env__::CallFinalizer)(cb, data, hint);
48
44
}
49
45
};
50
46
51
47
typedef node_napi_env__* node_napi_env;
52
48
53
49
namespace v8impl {
54
50
51
+ void trigger_fatal_exception (napi_env env, v8::Local<v8::Value> local_err) {
52
+ v8::Local<v8::Message> local_msg =
53
+ v8::Exception::CreateMessage (env->isolate , local_err);
54
+ node::errors::TriggerUncaughtException (env->isolate , local_err, local_msg);
55
+ }
56
+
55
57
namespace {
56
58
57
59
class BufferFinalizer : private Finalizer {
@@ -71,12 +73,9 @@ class BufferFinalizer : private Finalizer {
71
73
v8::HandleScope handle_scope (finalizer->_env ->isolate );
72
74
v8::Context::Scope context_scope (finalizer->_env ->context ());
73
75
74
- finalizer->_env ->CallIntoModule ([&](napi_env env) {
75
- finalizer->_finalize_callback (
76
- env,
77
- finalizer->_finalize_data ,
78
- finalizer->_finalize_hint );
79
- });
76
+ finalizer->_env ->CallFinalizer (finalizer->_finalize_callback ,
77
+ finalizer->_finalize_data ,
78
+ finalizer->_finalize_hint );
80
79
});
81
80
}
82
81
@@ -107,13 +106,6 @@ static inline napi_env NewEnv(v8::Local<v8::Context> context) {
107
106
return result;
108
107
}
109
108
110
- static inline void trigger_fatal_exception (
111
- napi_env env, v8::Local<v8::Value> local_err) {
112
- v8::Local<v8::Message> local_msg =
113
- v8::Exception::CreateMessage (env->isolate , local_err);
114
- node::errors::TriggerUncaughtException (env->isolate , local_err, local_msg);
115
- }
116
-
117
109
class ThreadSafeFunction : public node ::AsyncResource {
118
110
public:
119
111
ThreadSafeFunction (v8::Local<v8::Function> func,
@@ -312,19 +304,17 @@ class ThreadSafeFunction : public node::AsyncResource {
312
304
v8::Local<v8::Function>::New (env->isolate , ref);
313
305
js_callback = v8impl::JsValueFromV8LocalValue (js_cb);
314
306
}
315
- env->CallIntoModule ([&](napi_env env) {
316
- call_js_cb (env, js_callback, context, data);
317
- });
307
+ env->CallbackIntoModule (
308
+ [&](napi_env env) { call_js_cb (env, js_callback, context, data); });
318
309
}
319
310
}
320
311
321
312
void Finalize () {
322
313
v8::HandleScope scope (env->isolate );
323
314
if (finalize_cb) {
324
315
CallbackScope cb_scope (this );
325
- env->CallIntoModule ([&](napi_env env) {
326
- finalize_cb (env, finalize_data, context);
327
- });
316
+ env->CallbackIntoModule (
317
+ [&](napi_env env) { finalize_cb (env, finalize_data, context); });
328
318
}
329
319
EmptyQueueAndDelete ();
330
320
}
@@ -1043,13 +1033,8 @@ class Work : public node::AsyncResource, public node::ThreadPoolWork {
1043
1033
1044
1034
CallbackScope callback_scope (this );
1045
1035
1046
- _env->CallIntoModule ([&](napi_env env) {
1036
+ _env->CallbackIntoModule ([&](napi_env env) {
1047
1037
_complete (env, ConvertUVErrorCode (status), _data);
1048
- }, [](napi_env env, v8::Local<v8::Value> local_err) {
1049
- // If there was an unhandled exception in the complete callback,
1050
- // report it as a fatal exception. (There is no JavaScript on the
1051
- // callstack that can possibly handle it.)
1052
- v8impl::trigger_fatal_exception (env, local_err);
1053
1038
});
1054
1039
1055
1040
// Note: Don't access `work` after this point because it was
0 commit comments