### 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
DCHECK_CURRENTLY_ON(BrowserThread::UI);
  int opener_render_process_id = opener->GetProcess()->GetID();
  if (RendererUsesNativeWindowOpen(opener_render_process_id)) {
    if (RendererDisablesPopups(opener_render_process_id)) {
      
      
      return false;
    } else {
      *no_javascript_access = false;
      return true;
    }
  }
  if (delegate_) {
    return delegate_->CanCreateWindow(
        opener, opener_url, opener_top_level_frame_url, source_origin,
        container_type, target_url, referrer, frame_name, disposition, features,
        additional_features, body, user_gesture, opener_suppressed,
        no_javascript_access);
  }
  return false;
}
void AtomBrowserClient::GetAdditionalAllowedSchemesForFileSystem(
    std::vector<std::string>* additional_schemes) {
  auto schemes_list = api::GetStandardSchemes();
  if (!schemes_list.empty())
    additional_schemes->insert(additional_schemes->end(), schemes_list.begin(),
                               schemes_list.end());
  additional_schemes->push_back(content::kChromeDevToolsScheme);
}
void AtomBrowserClient::GetAdditionalWebUISchemes(