### 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
int exit_code = node::InitializeNodeWithArgs(&argv, &exec_argv, &errors);
  for (const std::string& error : errors)
    fprintf(stderr, "%s: %s\n", argv[0].c_str(), error.c_str());
  if (exit_code != 0)
    exit(exit_code);
#if BUILDFLAG(IS_WIN)
  
  
  if (browser_env_ == BrowserEnvironment::kBrowser ||
      env->HasVar("ELECTRON_DEFAULT_ERROR_MODE"))
    SetErrorMode(GetErrorMode() & ~SEM_NOGPFAULTERRORBOX);
#endif
  g_is_initialized = true;
}
node::Environment* NodeBindings::CreateEnvironment(
    v8::Handle<v8::Context> context,
    node::MultiIsolatePlatform* platform) {
#if BUILDFLAG(IS_WIN)
  auto& atom_args = ElectronCommandLine::argv();
  std::vector<std::string> args(atom_args.size());
  std::transform(atom_args.cbegin(), atom_args.cend(), args.begin(),
                 [](auto& a) { return base::WideToUTF8(a); });
#else
  auto args = ElectronCommandLine::argv();
#endif
  
  std::string process_type;
  switch (browser_env_) {
    case BrowserEnvironment::kBrowser:
      process_type = "browser";