- Electron version: v0.37.4
- Operating system: OSX 10.10.5

When _listening_ on [`onHeadersReceived`](https://github.com/electron/electron/blob/master/docs/api/session.md#seswebrequestonheadersreceivedfilter-listener), "Location" headers are no longer obeyed, and redirects are not followed, even when passing the original `responseHeaders` untouched. I'm not sure if this behaviour is intentional or a bug, it feels like the latter.

**Follows redirect:**

``` js
// Assuming the following
var win = new BrowserWindow({});
var sess = win.webContents.session;
// The page is loaded as expected
win.loadURL("http://bbc.co.uk");
```

**Does not follow redirect (ends early):**

``` js
// Same as above
var win = new BrowserWindow({});
var sess = win.webContents.session;
// But, this time, let's listen to `onHeadersReceived`
sess.webRequest.onHeadersReceived(function (details, callback) {
  console.log(details.responseHeaders);
  callback({cancel: false, responseHeaders: details.responseHeaders});
});
// The page is not loaded / the redirect is not obeyed...
win.loadURL("http://bbc.co.uk");
```

And below is the output of the `console.log`:

```
{ Connection: [ 'Keep-Alive' ],
  'Content-Length': [ '0' ],
  'Content-Type': [ 'text/html' ],
  Date: [ 'Mon, 04 Apr 2016 21:32:18 GMT' ],
  Location: [ 'http://www.bbc.co.uk/' ] }
```

atom/browser/net/atom_network_delegate.cc
ResponseEvent type,
    net::URLRequest* request,
    const net::CompletionCallback& callback,
    Out out,
    Args... args) {
  const auto& info = response_listeners_[type];
  if (!MatchesFilterCondition(request, info.url_patterns))
    return net::OK;
  scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue);
  FillDetailsObject(details.get(), request, args...);
  
  callbacks_[request->identifier()] = callback;
  ResponseCallback response =
      base::Bind(&AtomNetworkDelegate::OnListenerResultInUI<Out>,
                 base::Unretained(this), request->identifier(), out);
  BrowserThread::PostTask(
      BrowserThread::UI, FROM_HERE,
      base::Bind(RunResponseListener, info.listener, base::Passed(&details),
                 response));
  return net::ERR_IO_PENDING;
}
template<typename...Args>
void AtomNetworkDelegate::HandleSimpleEvent(