- 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
const net::HttpResponseHeaders* headers) {
  if (!headers)
    return;
  scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
  void* iter = nullptr;
  std::string key;
  std::string value;
  while (headers->EnumerateHeaderLines(&iter, &key, &value)) {
    if (dict->HasKey(key)) {
      base::ListValue* values = nullptr;
      if (dict->GetList(key, &values))
        values->AppendString(value);
    } else {
      scoped_ptr<base::ListValue> values(new base::ListValue);
      values->AppendString(value);
      dict->Set(key, std::move(values));
    }
  }
  details->Set("responseHeaders", std::move(dict));
  details->SetString("statusLine", headers->GetStatusLine());
  details->SetInteger("statusCode", headers->response_code());
}
void ToDictionary(base::DictionaryValue* details, const GURL& location) {