### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
- [X] I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.

### Electron Version

13.1.4

### What operating system are you using?

Windows

### Operating System Version

10

### What arch are you using?

x64

### Last Known Working Electron version

not

### Expected Behavior

callbacks added by setImmediate and process.nextTick executed normally.

### Actual Behavior

After I reload my project with ctrl +R,something was wrong.
And I run those code in dev tool's console.
```
setImmediate(()=>{
   console.log("immediate")
})
process.nextTick(()=>{
   console.log("nextTick")
})
```
but console.log didn't show the log,and callback added by setTimeout works at the same time.

I read the source code,found some comment
```
// setImmediate and process.nextTick makes use of uv_check and uv_prepare to
// run the callbacks, however since we only run uv loop on requests, the
// callbacks wouldn't be called until something else activated the uv loop,
// which would delay the callbacks for arbitrary long time. So we should
// initiatively activate the uv loop once setImmediate and process.nextTick is
// called.
```
Is electron use different event loop from nodejs? 
Any idea what's going on?


### Testcase Gist URL

_No response_

### Additional Information

This bug is occasional.
shell/common/node_bindings.cc
base::FilePath resources_path = GetResourcesPath();
  std::string init_script = "electron/js2c/" + process_type + "_init";
  args.insert(args.begin() + 1, init_script);
  isolate_data_ = node::CreateIsolateData(isolate, uv_loop_, platform);
  node::Environment* env;
  uint64_t flags = node::EnvironmentFlags::kDefaultFlags |
                   node::EnvironmentFlags::kHideConsoleWindows |
                   node::EnvironmentFlags::kNoGlobalSearchPaths;
  if (browser_env_ != BrowserEnvironment::kBrowser) {
    
    
    
    flags |= node::EnvironmentFlags::kNoRegisterESMLoader |
             node::EnvironmentFlags::kNoInitializeInspector;
  }
  v8::TryCatch try_catch(isolate);
  env = node::CreateEnvironment(
      isolate_data_, context, args, exec_args,
      static_cast<node::EnvironmentFlags::Flags>(flags));
  if (try_catch.HasCaught()) {
    std::string err_msg =
        "Failed to initialize node environment in process: " + process_type;
    v8::Local<v8::Message> message = try_catch.Message();
    std::string msg;
    if (!message.IsEmpty() && gin::ConvertFromV8(isolate, message->Get(), &msg))
      err_msg += " , with error: " + msg;
    LOG(ERROR) << err_msg;
  }
  DCHECK(env);