<!--  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/node_bindings.cc
for (const auto& arg : argv) {
#if defined(OS_WIN)
    const auto& option = base::UTF16ToUTF8(arg);
#else
    const auto& option = arg;
#endif
    const auto stripped = base::StringPiece(option).substr(0, option.find('='));
    
    if (allowed.count(stripped) != 0 || stripped == "--")
      args.push_back(option);
  }
  std::vector<std::string> errors;
  const int exit_code = ProcessGlobalArgs(&args, nullptr, &errors,
                                          node::kDisallowedInEnvironment);
  const std::string err_str = "Error parsing Node.js cli flags ";
  if (exit_code != 0) {
    LOG(ERROR) << err_str;
  } else if (!errors.empty()) {
    LOG(ERROR) << err_str << base::JoinString(errors, " ");
  }
}  
void SetNodeOptions(base::Environment* env) {
  
  const std::set<std::string> disallowed = {
      "--openssl-config", "--use-bundled-ca", "--use-openssl-ca",
      "--force-fips", "--enable-fips"};
  
  const std::set<std::string> allowed_in_packaged = {"--max-http-header-size",
                                                     "--http-parser"};
  if (env->HasVar("NODE_OPTIONS")) {