- Electron version:  0.37.8
- Operating system: Windows 7 Ultimate SP1

I am testing failure scenarios for file downloading using downloadURL. I've registered an event listener to the 'done' even using the download item. When I interrupt the network connection during a download, I do not see any 'done' event fire with the state of 'interrupted.

I was hoping to catch and do something useful in case a download is interrupted, but it appears that I'm not getting the notification event I expect.

Can anyone help? Is this the right approach? Does the event handling require external network connection to function? What does trigger the 'interrupted' state?

``` javascript
... 
   item.on('done', (e, s) => this._handleDone(e, s))
  }

  _handleDone(event, state) {
    logger.info("_handleDone: state = " + state)
    switch(state) {
      case 'completed': {
        logger.info("DOWNLOAD COMPLETED")
        this.currentJob.file.Status = Downloader.STATUS_COMPLETED
        this.emit('job-changed', this._jobStatus(this.currentJob.job))
        break;
      }
      case 'cancelled': {
        logger.info("DOWNLOAD CANCELLED")
        this.currentJob.file.Status = Downloader.STATUS_CANCELLED
        this.emit('job-changed', this._jobStatus(this.currentJob.job))
        break;
      }
      case 'interrupted': {
        logger.info("DOWNLOAD FAILED")
        this.currentJob.file.Status = Downloader.STATUS_FAILED
        this.emit('job-changed', this._jobStatus(this.currentJob.job))
        break;
      }
      default: {
        logger.info("DOWNLOAD DONE UNHANDLED STATE", state)
      }
    }
```

atom/browser/api/atom_api_download_item.cc
return download_item_->GetContentDisposition();
}
const GURL& DownloadItem::GetURL() const {
  return download_item_->GetURL();
}
void DownloadItem::SetSavePath(const base::FilePath& path) {
  save_path_ = path;
}
base::FilePath DownloadItem::GetSavePath() const {
  return save_path_;
}
void DownloadItem::BuildPrototype(v8::Isolate* isolate,
                                  v8::Local<v8::ObjectTemplate> prototype) {
  mate::ObjectTemplateBuilder(isolate, prototype)
      .MakeDestroyable()
      .SetMethod("pause", &DownloadItem::Pause)
      .SetMethod("resume", &DownloadItem::Resume)
      .SetMethod("cancel", &DownloadItem::Cancel)
      .SetMethod("getReceivedBytes", &DownloadItem::GetReceivedBytes)
      .SetMethod("getTotalBytes", &DownloadItem::GetTotalBytes)
      .SetMethod("getMimeType", &DownloadItem::GetMimeType)
      .SetMethod("hasUserGesture", &DownloadItem::HasUserGesture)
      .SetMethod("getFilename", &DownloadItem::GetFilename)
      .SetMethod("getContentDisposition", &DownloadItem::GetContentDisposition)
      .SetMethod("getURL", &DownloadItem::GetURL)
      .SetMethod("setSavePath", &DownloadItem::SetSavePath)
      .SetMethod("getSavePath", &DownloadItem::GetSavePath);
}
mate::Handle<DownloadItem> DownloadItem::Create(