* Electron version: 1.8.2-beta.3
* Operating system: MacOS 10.12

### Expected behavior

File downloads from custom protocols should complete without issue.

### Actual behavior

Before even triggering the custom protocol handler, the download-item emits 'done' with a state of 'interrupted'. In my demo linked below, I use the new registerStreamProtocol, but I was able to reproduce using registerHttpProtocol as well.

### How to reproduce

Use https://github.com/pfrazee/electron-download-interrupt-bug

atom/browser/net/atom_url_request.cc
AtomBrowserContext* browser_context,
    const std::string& method,
    const std::string& url,
    const std::string& redirect_policy,
    api::URLRequest* delegate) {
  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
  DCHECK(browser_context);
  DCHECK(!url.empty());
  DCHECK(delegate);
  if (!browser_context || url.empty() || !delegate) {
    return nullptr;
  }
  scoped_refptr<brightray::URLRequestContextGetter> request_context_getter(
      browser_context->url_request_context_getter());
  DCHECK(request_context_getter);
  if (!request_context_getter) {
    return nullptr;
  }
  scoped_refptr<AtomURLRequest> atom_url_request(new AtomURLRequest(delegate));
  if (content::BrowserThread::PostTask(
          content::BrowserThread::IO, FROM_HERE,
          base::Bind(&AtomURLRequest::DoInitialize, atom_url_request,
                     request_context_getter, method, url, redirect_policy))) {
    return atom_url_request;
  }
  return nullptr;
}
void AtomURLRequest::Terminate() {