@@ -54,7 +54,8 @@ Worker::Worker(Environment* env,
5454 std::shared_ptr<PerIsolateOptions> per_isolate_opts,
5555 std::vector<std::string>&& exec_argv,
5656 std::shared_ptr<KVStore> env_vars,
57- const SnapshotData* snapshot_data)
57+ const SnapshotData* snapshot_data,
58+ const bool is_internal)
5859 : AsyncWrap(env, wrap, AsyncWrap::PROVIDER_WORKER),
5960 per_isolate_opts_ (per_isolate_opts),
6061 exec_argv_(exec_argv),
@@ -63,7 +64,8 @@ Worker::Worker(Environment* env,
6364 name_(name),
6465 env_vars_(env_vars),
6566 embedder_preload_(env->embedder_preload ()),
66- snapshot_data_(snapshot_data) {
67+ snapshot_data_(snapshot_data),
68+ is_internal_(is_internal) {
6769 Debug (this , " Creating new worker instance with thread id %llu" ,
6870 thread_id_.id );
6971
@@ -685,7 +687,8 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) {
685687 per_isolate_opts,
686688 std::move (exec_argv_out),
687689 env_vars,
688- snapshot_data);
690+ snapshot_data,
691+ is_internal);
689692
690693 CHECK (args[3 ]->IsFloat64Array ());
691694 Local<Float64Array> limit_info = args[3 ].As <Float64Array>();
@@ -1028,6 +1031,16 @@ void CreateWorkerPerContextProperties(Local<Object> target,
10281031 Boolean::New (isolate, env->is_main_thread ()))
10291032 .Check ();
10301033
1034+ Worker* worker = env->isolate_data ()->worker_context ();
1035+ bool is_internal = worker != nullptr && worker->is_internal ();
1036+
1037+ // Set the is_internal property
1038+ target
1039+ ->Set (env->context (),
1040+ FIXED_ONE_BYTE_STRING (isolate, " isInternalThread" ),
1041+ Boolean::New (isolate, is_internal))
1042+ .Check ();
1043+
10311044 target
10321045 ->Set (env->context (),
10331046 FIXED_ONE_BYTE_STRING (isolate, " ownsProcessState" ),
0 commit comments