<!--  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
webContents.fromId() for non existing id (e.g. removed webview) causes segmentation fault in Electron 11.
In Electron 9 & 10 null was returned.
Same problem on Windows and macOS Catalina 

* **Electron Version:**
  * 11.0.1
* **Operating System:**
  * macOS 11.0.1
* **Last Known Working Electron version:**
  * 10.1.6

### Expected Behavior
<!-- A clear and concise description of what you expected to happen. -->
webContents.fromId() returns null for non existing id

### Actual Behavior
<!-- A clear and concise description of what actually happened. -->
Segmentation fault

### To Reproduce
https://gist.github.com/larssvensby/071353ec109c4975fd28b5a4b1dc7ad5

### Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->

### Additional Information
<!-- Add any other context about the problem here. -->

shell/browser/api/electron_api_web_contents.cc
sure "destroyed" event is emitted. For #3, the content::WebContents will
 be destroyed on close, and WebContentsDestroyed would be called for it, so
 we need to make sure the api::WebContents is also deleted.
 For #4, the WebContents will be destroyed by embedder.
void WebContents::WebContentsDestroyed() {
   Give chance for guest delegate to cleanup its observers
   since the native class is only destroyed in the next tick.
  if (guest_delegate_)
    guest_delegate_->WillDestroy();
   Cleanup relationships with other parts.
   We can not call Destroy here because we need to call Emit first, but we
   also do not want any method to be used, so just mark as destroyed here.
  MarkDestroyed();
  Emit("destroyed");
   For guest view based on OOPIF, the WebContents is released by the embedder
   frame, and we need to clear the reference to the memory.
  if (IsGuest() && inspectable_ontents_) {
    inspectable_ontents_->ReleaseWebContents();
    ResetManagedWebContents(false);
  }
   Destroy the native class in next tick.
  base::ThreadTaskRunnerHandle::Get()->PostTask(
      FROM_HERE, base::BindOnce(
                     [](base::WeakPtr<WebContents> wc) {
                       if (wc)
                         delete wc.get();
                     },
                     GetWeakPtr()));
}
void WebContents::NavigationEntryCommitted(