* Electron version: 1.4.9
* Operating system: Windows 10 x64

### Expected behavior
The new request generated by interceptHttpProtocol should work normally with new session(slaveSession).

### Actual behavior
The new request seems to stick with the old session(mainSession).

### How to reproduce
```
const electron = require('electron')
const {app, protocol} = require('electron')
const BrowserWindow = electron.BrowserWindow
const {session} = require('electron')

let mainWindow
let mainSession
let slaveSession

app.on('ready', function(){
  mainSession = session.fromPartition('main')
  slaveSession = session.fromPartition('slave')
  mainWindow = new BrowserWindow({
    webPreferences: {
        javascript: true,
        plugins: true,
        webSecurity: false,
        session: mainSession
      }
    });
  
  mainWindow.webContents.openDevTools()

  mainSession.protocol.interceptHttpProtocol('http', function(request, callback) {
    if(request.url.indexOf('/api/list') >= 0){
      request.url = "custom:" + request.url.split(':')[1]
      callback(request)
    } else {
      console.log('pass ' + request.url)
      callback({'url': request.url, 'method': request.method, 'session': slaveSession})  
    }
  }, function(error){
    if (error) log("interceptHttpProtocol error: " + error)
  })

  mainWindow.loadURL("http://pan.baidu.com")
})
```
The following codes will enter infinite loop:
```
pass http://pan.baidu.com/
pass http://pan.baidu.com/
...
...
```
But there is no interceptHttpProtocol defined on slaveSession, is it a bug?

atom/browser/net/url_request_fetch_job.cc
net::IOBuffer* target, int target_size) {
  int bytes_written = std::min(num_bytes, target_size);
  memcpy(target->data(), source->data(), bytes_written);
  return bytes_written;
}
void URLRequestFetchJob::ClearPendingBuffer() {
  pending_buffer_ = nullptr;
  pending_buffer_size_ = 0;
}
void URLRequestFetchJob::ClearWriteBuffer() {
  write_buffer_ = nullptr;
  write_num_bytes_ = 0;
  write_callback_.Reset();
}
}