<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
  * From v7.1.14 to v9.0.0-beta.5
* **Operating System:**
  * macOS 10.15.3
* **Last Known Working Electron version:**
  * v6.1.9

### Expected Behavior
A `net` request that sets a cookie using `request.setHeader` should include the specified header.

### Actual Behavior
Instead, when cookies from the session cookie jar are present, they are sent instead and the specified header is ignored.

### To Reproduce
Run this code:
```js
const electron = require('electron');
electron.app.on('ready', async () => {
  await makeRequest();
  // A long timeout is required for it to be reproducible when running this script on the first try, in a clean session
  setTimeout(async () => {
    console.log(await electron.session.defaultSession.cookies.get({}));
    await makeRequest();
  }, 10000);
});

function makeRequest() {
  return new Promise(resolve => {
    const request = electron.net.request({ url: 'https://www.twitter.com' });
    request.setHeader('cookie', 'foo=bar');
    request.on('close', resolve);
    request.end();
  });
}
```

<!--
For bugs that can be encapsulated in a small experiment, you can use Electron Fiddle (https://github.com/electron/fiddle) to publish your example to a GitHub Gist and link it your bug report.
-->

<!--
If Fiddle is insufficient to produce an example, please provide an example REPOSITORY that can be cloned and run. You can fork electron-quick-start (https://github.com/electron/electron-quick-start) and include a link to the branch with your changes.
-->

<!--
If you provide a URL, please list the commands required to clone/setup/run your repo e.g.
```sh
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
```
-->

### Screenshots
When running the above code, all requests after the initial one shows a cookie header with this value, which reflects the value that is present in the session's cookies.
<img width="795" alt="image" src="https://user-images.githubusercontent.com/4505008/75946161-2be4d380-5e51-11ea-81ad-bb2769de8fe0.png">

### Additional Information
* To see the incorrect headers, you must inspect the network request in a proxy such as Fiddler.
* This was previously reported in #8223, fixed in #8258, but now seems to have been regressed.
* Also #8891 seems to be possibly implemented by accident now?

shell/browser/api/electron_api_url_loader.cc
v8::Isolate* isolate,
      const network::mojom::HttpRawHeaderPairPtr& pair) {
    gin_helper::Dictionary dict = gin::Dictionary::CreateEmpty(isolate);
    dict.Set("key", base::ToLowerASCII(pair->key));
    dict.Set("value", pair->value);
    return dict.GetHandle();
  }
};
}  
namespace electron {
namespace api {
namespace {
class BufferDataSource : public mojo::DataPipeProducer::DataSource {
 public:
  explicit BufferDataSource(base::span<char> buffer) {