* 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
public:
  explicit UploadOwnedIOBufferElementReader(
      scoped_refptr<const net::IOBufferWithSize> buffer)
      : net::UploadBytesElementReader(buffer->data(), buffer->size()),
        buffer_(buffer) {}
  ~UploadOwnedIOBufferElementReader() override {}
  static UploadOwnedIOBufferElementReader* CreateWithBuffer(
      scoped_refptr<const net::IOBufferWithSize> buffer) {
    return new UploadOwnedIOBufferElementReader(std::move(buffer));
  }
 private:
  scoped_refptr<const net::IOBuffer> buffer_;
  DISALLOW_COPY_AND_ASSIGN(UploadOwnedIOBufferElementReader);
};
}  
AtomURLRequest::AtomURLRequest(api::URLRequest* delegate)
    : delegate_(delegate),
      is_chunked_upload_(false),
      response_read_buffer_(new net::IOBuffer(kBufferSize)) {}
AtomURLRequest::~AtomURLRequest() {
  DCHECK(!request_context_getter_);
  DCHECK(!request_);
}
scoped_refptr<AtomURLRequest> AtomURLRequest::Create(