<!--
Thanks for opening an issue! A few things to keep in mind:

- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
  the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->

* Electron version: 1.6.1
* Operating system: openSUSE Leap 42.2 (Linux 4.4.49, x86-64); also reproducible on Windows Server 2016 14393.

### Expected behavior

<!-- What do you think should happen? -->
In BrowserWindow or webview with context isolation enabled, calling `fetch` in preload script should work.  

### Actual behavior

<!-- What actually happens? -->
The page crashes and becomes blank. Devtools shows "Devtools was disconnected from the page".

### How to reproduce

<!-- For bugs, provide sample code or a repo URL that demos the problem -->
Download electron-quick-start, add `webPreferences: {preload: path.join(__dirname, 'index.js'), contextIsolation: true}` to the BrowserWindow options in main.js. 

Create index.js: `console.log(fetch('http://example.com'))`

Run `electron .` and it crashes. If started without preload script, calling `fetch('http://example.com')` in Electron Isolated Context of devtools also causes crash.

----

I think the problem may be related with the Isolated Context's security origin. In my local electron build I add the following to CreateIsolatedWorldContext() in atom/renderer/atom_renderer_client.cc to enable cross origin requests, which can make `fetch` work.

    static auto universalOriginURL = blink::WebURL(GURL("app://universal"));
    static auto universalOrigin = []() {
        auto result = blink::WebSecurityOrigin::create(universalOriginURL);
        for (const char* scheme : {"http", "https"}) {
            blink::WebSecurityPolicy::addOriginAccessWhitelistEntry(universalOriginURL,
                blink::WebString::fromUTF8(scheme), blink::WebString(), true);
        }
        return result;
    }();
    render_frame_->GetWebFrame()->setIsolatedWorldSecurityOrigin(
        World::ISOLATED_WORLD, universalOrigin);
atom/renderer/atom_renderer_client.cc
#include "chrome/renderer/printing/print_web_view_helper.h"
#include "chrome/renderer/tts_dispatcher.h"
#include "content/public/common/content_constants.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_frame_observer.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
#include "ipc/ipc_message_macros.h"
#include "native_mate/dictionary.h"
#include "third_party/WebKit/public/web/WebCustomElement.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebFrameWidget.h"
#include "third_party/WebKit/public/web/WebKit.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "third_party/WebKit/public/web/WebPluginParams.h"
#include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
#include "third_party/WebKit/public/web/WebScriptSource.h"
#include "third_party/WebKit/public/web/WebSecurityPolicy.h"
#include "third_party/WebKit/public/web/WebView.h"
#if defined(OS_MACOSX)
#include "base/mac/mac_util.h"
#include "base/strings/sys_string_conversions.h"
#endif
#if defined(OS_WIN)
#include <shlobj.h>
#endif
#include "atom/common/node_includes.h"
namespace atom {
namespace {
enum World {