Steps to reproduce:

1. Start local https server with unsigned certificate (I used this https://timonweb.com/posts/running-expressjs-server-over-https/)
2. Create simple app:
```
const { app, BrowserWindow } = require('electron')

function createWindow () {
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    show: true
  })
  win.loadURL('https://www.localhost:3000');
}

app.on('ready', createWindow)
```
3. Launch this app with the newest master's Electron (I tested on 9.0.0-nightly.20200130)

What happens:
Application crashes with following callstack:
```
>	[Inline Frame] electron.exe!base::OnceCallback<void (content::CertificateRequestResultType)>::Run(content::CertificateRequestResultType args) Line 98	C++
 	electron.exe!electron::api::App::AllowCertificateError(content::WebContents * web_contents, int cert_error, const net::SSLInfo & ssl_info, const GURL & request_url, bool is_main_frame_request, bool strict_enforcement, base::OnceCallback<void (content::CertificateRequestResultType)> callback) Line 709	C++
 	electron.exe!electron::AtomBrowserClient::AllowCertificateError(content::WebContents * web_contents, int cert_error, const net::SSLInfo & ssl_info, const GURL & request_url, bool is_main_frame_request, bool strict_enforcement, base::OnceCallback<void (content::CertificateRequestResultType)> callback) Line 655	C++
 	electron.exe!content::SSLManager::OnCertErrorInternal(std::__1::unique_ptr<content::SSLErrorHandler,std::__1::default_delete<content::SSLErrorHandler> > handler) Line 360	C++
 	electron.exe!content::SSLManager::OnCertError(std::__1::unique_ptr<content::SSLErrorHandler,std::__1::default_delete<content::SSLErrorHandler> > handler) Line 313	C++
 	electron.exe!content::SSLManager::OnSSLCertificateError(const base::WeakPtr<content::SSLErrorHandler::Delegate> & delegate, bool is_main_frame_request, const GURL & url, content::WebContents * web_contents, int net_error, const net::SSLInfo & ssl_info, bool fatal) Line 141	C++
 	electron.exe!content::StoragePartitionImpl::OnSSLCertificateError(int process_id, int routing_id, const GURL & url, int net_error, const net::SSLInfo & ssl_info, bool fatal, base::OnceCallback<void (int)> response) Line 1810	C++
 	electron.exe!network::mojom::NetworkContextClientStubDispatch::AcceptWithResponder(network::mojom::NetworkContextClient * impl, mojo::Message * message, std::__1::unique_ptr<mojo::MessageReceiverWithStatus,std::__1::default_delete<mojo::MessageReceiverWithStatus> > responder) Line 4607	C++
 	electron.exe!network::mojom::NetworkContextClientStub<mojo::RawPtrImplRefTraits<network::mojom::NetworkContextClient> >::AcceptWithResponder(mojo::Message * message, std::__1::unique_ptr<mojo::MessageReceiverWithStatus,std::__1::default_delete<mojo::MessageReceiverWithStatus> > responder) Line 1607	C++
 	electron.exe!mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message * message) Line 528	C++
 	electron.exe!mojo::internal::MultiplexRouter::ProcessIncomingMessage(mojo::internal::MultiplexRouter::MessageWrapper * message_wrapper, mojo::internal::MultiplexRouter::ClientCallBehavior client_call_behavior, base::SequencedTaskRunner * current_task_runner) Line 952	C++
 	electron.exe!mojo::internal::MultiplexRouter::Accept(mojo::Message * message) Line 624	C++
 	electron.exe!mojo::Connector::DispatchMessageW(mojo::Message message) Line 538	C++
 	electron.exe!mojo::Connector::ReadAllAvailableMessages() Line 627	C++
 	[Inline Frame] electron.exe!base::RepeatingCallback<void (unsigned int, const mojo::HandleSignalsState &)>::Run(unsigned int args, const mojo::HandleSignalsState & args) Line 132	C++
 	electron.exe!mojo::SimpleWatcher::OnHandleReady(int watch_id, unsigned int result, const mojo::HandleSignalsState & state) Line 293	C++
 	[Inline Frame] electron.exe!base::OnceCallback<void ()>::Run() Line 98	C++
 	electron.exe!base::TaskAnnotator::RunTask(const char * trace_event_name, base::PendingTask * pending_task) Line 142	C++
 	electron.exe!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow * continuation_lazy_now, bool * ran_task) Line 366	C++
 	electron.exe!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork() Line 221	C++
 	electron.exe!base::MessagePumpForUI::DoRunLoop() Line 218	C++
 	electron.exe!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 76	C++
 	electron.exe!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool application_tasks_allowed, base::TimeDelta timeout) Line 471	C++
 	electron.exe!base::RunLoop::Run() Line 157	C++
 	electron.exe!content::BrowserMainLoop::MainMessageLoopRun() Line 1505	C++
 	electron.exe!content::BrowserMainLoop::RunMainMessageLoopParts() Line 1062	C++
 	electron.exe!content::BrowserMainRunnerImpl::Run() Line 151	C++
 	electron.exe!content::BrowserMain(const content::MainFunctionParams & parameters) Line 47	C++
 	electron.exe!content::RunBrowserProcessMain(const content::MainFunctionParams & main_function_params, content::ContentMainDelegate * delegate) Line 531	C++
 	electron.exe!content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams & main_params, bool start_service_manager_only) Line 965	C++
 	electron.exe!content::ContentMainRunnerImpl::Run(bool start_service_manager_only) Line 876	C++
 	electron.exe!service_manager::Main(const service_manager::MainParams & params) Line 423	C++
 	electron.exe!content::ContentMain(const content::ContentMainParams & params) Line 19	C++
 	electron.exe!wWinMain(HINSTANCE__ * instance, HINSTANCE__ *, wchar_t * cmd, int) Line 158	C++
 	[External Code]	
```
shell/browser/api/atom_api_app.cc
}
#endif  
v8::Local<v8::Promise> App::GetFileIcon(const base::FilePath& path,
                                        gin_helper::Arguments* args) {
  gin_helper::Promise<gfx::Image> promise(isolate());
  v8::Local<v8::Promise> handle = promise.GetHandle();
  base::FilePath normalized_path = path.NormalizePathSeparators();
  IconLoader::IconSize icon_size;
  gin_helper::Dictionary options;
  if (!args->GetNext(&options)) {
    icon_size = IconLoader::IconSize::NORMAL;
  } else {
    std::string icon_size_string;
    options.Get("size", &icon_size_string);
    icon_size = GetIconSizeByString(icon_size_string);
  }
  auto* icon_manager = AtomBrowserMainParts::Get()->GetIconManager();
  gfx::Image* icon =
      icon_manager->LookupIconFromFilepath(normalized_path, icon_size);
  if (icon) {
    promise.Resolve(*icon);
  } else {
    icon_manager->LoadIcon(
        normalized_path, icon_size,
        base::BindOnce(&OnIconDataAvailable, std::move(promise)),
        &cancelable_task_tracker_);
  }
  return handle;
}
std::vector<gin_helper::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {