### Issue Details

* **Electron Version:**
  * 3.x, 4.x, 5.x, 6.x
* **Operating System:**
  * All
* **Last Known Working Electron version:**:
  * 2.x

### Expected Behavior
When navigations occur, a new process should be created for the navigation.

### Actual Behavior
When a navigation occurs _during_ a preloads scripts execution the same process is re-used as Chromium does not think the navigation has been committed yet.  This causes a memory leak and all native node modules to break.

### To Reproduce
Fiddle: https://gist.github.com/MarshallOfSound/c89aa0037c3da114d44aa3a2d1a0fc24

### Screenshots
![image](https://user-images.githubusercontent.com/6634592/55097842-eb45dd00-5079-11e9-99bf-d49c0d997bca.png)

As you can see here there are three navigation loads, the second and the third one actually have the same process ID (and are running in the same process)
shell/browser/atom_browser_client.cc
AtomBrowserClient::GetSystemSharedURLLoaderFactory() {
  if (!g_browser_process)
    return nullptr;
  return g_browser_process->shared_url_loader_factory();
}
void AtomBrowserClient::OnNetworkServiceCreated(
    network::mojom::NetworkService* network_service) {
  if (!g_browser_process)
    return;
  g_browser_process->system_network_context_manager()->OnNetworkServiceCreated(
      network_service);
}
std::vector<base::FilePath>
AtomBrowserClient::GetNetworkContextsParentDirectory() {
  base::FilePath user_data_dir;
  base::PathService::Get(DIR_USER_DATA, &user_data_dir);
  DCHECK(!user_data_dir.empty());
  return {user_data_dir};
}
std::string AtomBrowserClient::GetProduct() {
  return "Chrome/" CHROME_VERSION_STRING;
}
std::string AtomBrowserClient::GetUserAgent() {
  if (user_agent_override_.empty())
    return GetApplicationUserAgent();
  return user_agent_override_;
}
void AtomBrowserClient::SetUserAgent(const std::string& user_agent) {