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

* **Electron Version:**
  * 10.0.1
  * 10.0.0-beta.10
  * 9.2.1
* **Operating System:**
  * Windows 10 (2004)
  * macOS 10.15.6
* **Last Known Working Electron version:**
  * 10.0.0-beta.9
  * Issue is seen in 10.0.0-beta.10

### Expected Behavior
AudioWorklets can be created and destroyed multiple times while `nodeIntegrationInWorker` is enabled.

### Actual Behavior
AudioWorklet can only be created and destroyed once. Upon creating a second AudioWorklet, the UI hangs indefinitely.

### To Reproduce
Electron Fiddle: https://gist.github.com/samuelmaddock/5430479c0a08eca3f693df2518c9887d

1. Load Audio Worklet examples directory: https://googlechromelabs.github.io/web-audio-samples/audio-worklet/
2. Open a demo and click start.
3. Navigate back and return to the demos directory.
4. Open another demo and click start.

UI should no longer be responsive.

shell/common/api/electron_bindings.cc
node::Environment* env = node::Environment::GetCurrent(isolate);
  if (std::find(pending_next_ticks_.begin(), pending_next_ticks_.end(), env) !=
      pending_next_ticks_.end())
    return;
  pending_next_ticks_.push_back(env);
  uv_async_send(&call_next_tick_async_);
}
void ElectronBindings::OnCallNextTick(uv_async_t* handle) {
  ElectronBindings* self = static_cast<ElectronBindings*>(handle->data);
  for (std::list<node::Environment*>::const_iterator it =
           self->pending_next_ticks_.begin();
       it != self->pending_next_ticks_.end(); ++it) {
    node::Environment* env = *it;
    gin_helper::Locker locker(env->isolate());
    v8::Context::Scope context_scope(env->context());
    v8::HandleScope handle_scope(env->isolate());
    node::InternalCallbackScope scope(env, v8::Object::New(env->isolate()),
                                      {0, 0},
                                      node::InternalCallbackScope::kNoFlags);
  }
  self->pending_next_ticks_.clear();
}
void ElectronBindings::Log(const base::string16& message) {
  std::cout << message << std::flush;
}
void ElectronBindings::Crash() {
  volatile int* zero = nullptr;
  *zero = 0;
}
void ElectronBindings::Hang() {