<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [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 for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
  * 8.0.0
* **Operating System:**
  * Windows 10 (1809)
* **Last Known Working Electron version:**
  * <!-- (if applicable) e.g. 3.1.0 -->Unknown

When setting `app.allowRendererProcessReuse = true` and after reloading the renderer (`Ctrl+R` in developer console), Node `fs` APIs would randomly stop working. Specifically, the callbacks are never called, or if you're using `fs.promises`, the promises are never resolved.

An interesting observation is: when you reload again, for a brief moment before the page is refreshed, the previous `fs` calls are magically unblocked. This can be observed by `console.log` lines suddenly printing the moment you hit `Ctrl+R` which disappears quickly as the whole page reloads.

Possibly related: https://github.com/electron/electron/issues/19554 This issue sounds like the opposite of what's happening here.

Also note: issue does not present itself when `app.allowRendererProcessReuse = false`


### Expected Behavior
From the repro steps, expecting to see local files printed in the console:
```
...
renderer.js:8 Reading file main.js
renderer.js:8 Reading file package-lock.json
renderer.js:8 Reading file package.json
renderer.js:8 Reading file preload.js
renderer.js:8 Reading file README.md
renderer.js:8 Reading file renderer.js
renderer.js:14 done
```

### Actual Behavior
List is printed the first time the app loads. Hit Ctrl+R and observe only a few lines printed, or none at all. Hit Ctrl+R again and observe more lines printed for a split second before renderer reloads.

### To Reproduce

Clone https://github.com/electron/electron-quick-start

rendereer.js
```
(async () => {
	const fs = require('fs').promises;

	for (let i = 0; i < 10; i++) {
		let list = await fs.readdir('.', {withFileTypes: true});
		for (let file of list) {
			if (file.isFile()) {
				console.log('Reading file', file.name);
				await fs.readFile(file.name, 'utf-8');
			}
		}
	}

	console.log('done');
})();
```

main.js
```
const {app, BrowserWindow} = require('electron');

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  });

  win.loadFile('index.html');
  win.webContents.openDevTools();
}

app.whenReady().then(createWindow);

app.allowRendererProcessReuse = true;
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow();
  }
});
```


### Screenshots
First boot:
![image](https://user-images.githubusercontent.com/609710/74136094-80cb5c00-4bbb-11ea-92fd-c49b87b3a9f3.png)
On reload:
![image](https://user-images.githubusercontent.com/609710/74136317-cd169c00-4bbb-11ea-8e81-caf0e967bbd9.png)


### Additional Information
<!-- Add any other context about the problem here. -->

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();