### Preflight Checklist

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

### Electron Version

12.0.2

### What operating system are you using?

Windows

### Operating System Version

Windows 10 Enterprise Version 1809

### What arch are you using?

x64

### Last Known Working Electron version

_No response_

### Expected Behavior

Use `select-client-certificate` event to allow the user to pick which certificate they want to use, rather than defaulting to the first one.  Following the example from Electron docs:
```
const { app } = require('electron')

app.on('select-client-certificate', (event, webContents, url, list, callback) => {
  event.preventDefault()
  callback(list[0])
})
```
This should have the same behavior as not having the code at all, because electron defaults to picking the first certificate in the list.  The end result is being able to successfully connect to the remote server using the client certificate.

### Actual Behavior

`callback(list[0])` does not send the full certificate chain.
Using Wireshark I was able to capture the two cases:
1. Not listening for `select-client-certificate`, Electron sends the full certificate chain including intermediate certificate.  See "Electron Working Certificate.png".  In this case I am able to connect to the server.
2. Adding the code above, listening for `select-client-certificate` and using the callback, Electron only sends the first certificate.  See "Electron Broken Certificate.png".  In this case I receive net::ERR_BAD_SSL_CLIENT_AUTH_CERT from the server.

Comparing the two wireshark outputs, you can see that the working example sends 2 certificates instead of 1.  I believe the necessary fix is to send the issuerCert in addition to the certificate already being sent.

### Testcase Gist URL

_No response_
Working Certificate:
![Electron Working Certificate](https://user-images.githubusercontent.com/57775339/113775335-89072480-96f6-11eb-9c08-d4e7873cf678.png)

Broken Certificate:
![Electron Broken Certificate](https://user-images.githubusercontent.com/57775339/113775341-8d334200-96f6-11eb-816f-68673e7ef7c2.png)

shell/browser/api/electron_api_app.cc
scoped_refptr<net::X509Certificate> cert,
                   scoped_refptr<net::SSLPrivateKey> private_key) {
  delegate->ContinueWithCertificate(cert, private_key);
}
void OnClientCertificateSelected(
    v8::Isolate* isolate,
    std::shared_ptr<content::ClientCertificateDelegate> delegate,
    std::shared_ptr<net::ClientCertIdentityList> identities,
    gin::Arguments* args) {
  if (args->Length() == 2) {
    delegate->ContinueWithCertificate(nullptr, nullptr);
    return;
  }
  v8::Local<v8::Value> val;