### 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_linux.cc
void NodeBindingsLinux::RunMessageLoop() {
  
  uv_loop_->data = this;
  uv_loop_->on_watcher_queue_updated = OnWatcherQueueChanged;
  NodeBindings::RunMessageLoop();
}
void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_t* loop) {
  NodeBindingsLinux* self = static_cast<NodeBindingsLinux*>(loop->data);
  
  
  self->WakeupEmbedThread();
}
void NodeBindingsLinux::PollEvents() {
  int timeout = uv_backend_timeout(uv_loop_);
  
  int r;
  do {
    struct epoll_event ev;
    r = epoll_wait(epoll_, &ev, 1, timeout);
  } while (r == -1 && errno == EINTR);
}
NodeBindings* NodeBindings::Create(BrowserEnvironment browser_env) {
  return new NodeBindingsLinux(browser_env);
}
}