### 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:**
8.0.0
* **Operating System:**
Only tested on mac 10.14.16 (Mojave)
* **Last Known Working Electron version:**
5.0.0   (not a regression range, this is the version I was using before)


### Expected Behavior
electron.screen can be used

### Actual Behavior
electron.screen can't be used if it was attempted to use before app ready event.

### To Reproduce
Details: it looks like that electron.screen is a lazy getter that gets badly cached if its initialization throws.
I had an `electron.screen` usage that threw the following error:

> "The 'screen' module can't be used before the app 'ready' event"

That's all fine and expected. However, a later usage of any of the APIs from `electron.screen`, for example `electron.screen.getAllDisplays()`, throws the following exception:

> callback can only be called for once

which, given the weird phrasing unrelated to the issue at hand, I believe is not intentional
shell/browser/api/electron_api_screen.cc
#include "shell/browser/api/electron_api_screen.h"
#include <algorithm>
#include <string>
#include "base/bind.h"
#include "gin/dictionary.h"
#include "gin/handle.h"
#include "shell/browser/browser.h"
#include "shell/common/gin_converters/callback_converter.h"
#include "shell/common/gin_converters/gfx_converter.h"
#include "shell/common/gin_converters/native_window_converter.h"
#include "shell/common/gin_helper/object_template_builder.h"
#include "shell/common/node_includes.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/gfx/geometry/point.h"
#if defined(OS_WIN)
#include "ui/display/win/screen_win.h"
#endif
namespace electron {
namespace api {
namespace {
template <class T>
typename T::iterator FindById(T* container, int id) {