### 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

13.0.0-beta-11

### What operating system are you using?

macOS

### Operating System Version

11.2.3

### What arch are you using?

x64

### Last Known Working Electron version

NA

### Expected Behavior

The service worker should be invoked first, falling back to the custom protocol

In the example, you can see that resources from the custom protocol, such as `test-scheme://authority/inner-img.png`, do not seem to trigger a fetch event in the service worker. Instead I only see the `test-scheme` protocol being invoked.  You can see this in the main log as `Trying to load resource using protocol: test-scheme://authority/inner-img.png`

However resources outside of the custom protocol, such `http://example.com/img.png`, do go through the service worker, Here if you open the developer tools, you can see `fetching in worker http://example.com/img.png` is logged

### Actual Behavior

The requests on the custom protocol seem to bypass the service worker and go directly to the custom protocol

### Testcase Gist URL

https://gist.github.com/775d15105c18d704741f1e4a460e4c5e

**Example Explained**
1. Register a custom protocol (`test-scheme`)
2. Load an iframe using the custom protocol: `test-scheme://authority/index.html`
3. Inside the iframe, register a service worker
4. After the service worker is registered, try loading resources inside the iframe. In the example, I use setTimeout to make sure the worker is fully ready before writing two images into the iframe: one image that uses the `test-scheme` protocol and one that comes from a fake external endpoint (`http://example.com/img.png`)


shell/renderer/renderer_client_base.cc
content::RenderFrame* render_frame) {
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
  extensions_renderer_client_.get()->RunScriptsAtDocumentStart(render_frame);
#endif
}
void RendererClientBase::RunScriptsAtDocumentIdle(
    content::RenderFrame* render_frame) {
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
  extensions_renderer_client_.get()->RunScriptsAtDocumentIdle(render_frame);
#endif
}
void RendererClientBase::RunScriptsAtDocumentEnd(
    content::RenderFrame* render_frame) {
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
  extensions_renderer_client_.get()->RunScriptsAtDocumentEnd(render_frame);
#endif
}
bool RendererClientBase::AllowScriptExtensionForServiceWorker(
    const url::Origin& script_origin) {
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
  return script_origin.scheme() == extensions::kExtensionScheme;
#else
  return false;
#endif
}
void RendererClientBase::DidInitializeServiceWorkerContextOnWorkerThread(