### 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
#endif
    const auto stripped = base::StringPiece(option).substr(0, option.find('='));
    
    if (allowed.count(stripped) != 0 || stripped == "--")
      args.push_back(option);
  }
  std::vector<std::string> errors;
  const int exit_code = ProcessGlobalArgs(&args, nullptr, &errors,
                                          node::kDisallowedInEnvironment);
  const std::string err_str = "Error parsing Node.js cli flags ";
  if (exit_code != 0) {
    LOG(ERROR) << err_str;
  } else if (!errors.empty()) {
    LOG(ERROR) << err_str << base::JoinString(errors, " ");
  }
}
void SetNodeOptions(base::Environment* env) {
  
  const std::set<std::string> disallowed = {
      "--openssl-config", "--use-bundled-ca", "--use-openssl-ca",
      "--force-fips", "--enable-fips"};
  
  const std::set<std::string> allowed_in_packaged = {"--max-http-header-size",
                                                     "--http-parser"};
  if (env->HasVar("NODE_OPTIONS")) {
    if (electron::fuses::IsNodeOptionsEnabled()) {
      std::string options;
      env->GetVar("NODE_OPTIONS", &options);
      std::vector<std::string> parts = base::SplitString(
          options, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);