### 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
#include "shell/renderer/electron_renderer_client.h"
#include <string>
#include <vector>
#include "base/command_line.h"
#include "content/public/renderer/render_frame.h"
#include "electron/buildflags/buildflags.h"
#include "shell/common/api/electron_bindings.h"
#include "shell/common/asar/asar_util.h"
#include "shell/common/gin_helper/dictionary.h"
#include "shell/common/gin_helper/event_emitter_caller.h"
#include "shell/common/node_bindings.h"
#include "shell/common/node_includes.h"
#include "shell/common/node_util.h"
#include "shell/common/options_switches.h"
#include "shell/renderer/electron_render_frame_observer.h"
#include "shell/renderer/web_worker_observer.h"
#include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_local_frame.h"
namespace electron {
namespace {
bool IsDevToolsExtension(content::RenderFrame* render_frame) {