### Issue Details

* **Electron Version:** 9.0.0 (beta versions of 9.0.0 too)
* **Operating System:** Windows 10 1903
* **Last Known Working Electron version:** 7.2.4

### Repro steps
1. **require** a native module in a Renderer process (on a page)
2. call libuv function **uv_queue_work** 5 times
3. get **uv_after_work_cb** invoked 5 times
4. reload the page 
5. call libuv function **uv_queue_work** 5 times once more

### Expected Behavior
6. get **uv_after_work_cb** invoked 5 times

### Actual Behavior
6. get **uv_after_work_cb** invoked 1 or 2 times, remaining ones never get invoked by libuv

### To Reproduce
I prepared a sample project with minimal code that demonstrates the problem:
>>> https://github.com/jphw/libuv_problems

Please read the README.MD and check src/libuv_problems_module.cpp sources.

### Additional Information
**app.allowRendererProcessReuse = false;**  works as a workaround for this issue

shell/renderer/electron_renderer_client.cc
bool reuse_renderer_processes_enabled =
      command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides);
  
  
  bool is_not_opened =
      !render_frame->GetWebFrame()->Opener() ||
      command_line->HasSwitch(switches::kEnableNodeLeakageInRenderers);
  
  
  
  
  bool is_main_frame = render_frame->IsMainFrame() &&
                       (is_not_opened || reuse_renderer_processes_enabled);
  bool is_devtools = IsDevToolsExtension(render_frame);
  bool allow_node_in_subframes =
      command_line->HasSwitch(switches::kNodeIntegrationInSubFrames);
  bool should_load_node =
      (is_main_frame || is_devtools || allow_node_in_subframes) &&
      !IsWebViewFrame(renderer_context, render_frame);
  if (!should_load_node) {
    return;
  }
  injected_frames_.insert(render_frame);
  
  
  if (!node_integration_initialized_) {
    node_integration_initialized_ = true;
    node_bindings_->Initialize();
    node_bindings_->PrepareMessageLoop();