The current `5-0-x` branch and `master` are experiencing random `remote` API failures again.  We should look into this and fix before 5.0 stable.

Example: https://circleci.com/gh/electron/electron/138325
atom/common/api/atom_api_v8_util.cc
isolate->RequestGarbageCollectionForTesting(
      v8::Isolate::GarbageCollectionType::kFullGarbageCollection);
}
bool IsSameOrigin(const GURL& l, const GURL& r) {
  return url::Origin::Create(l).IsSameOriginWith(url::Origin::Create(r));
}
void Initialize(v8::Local<v8::Object> exports,
                v8::Local<v8::Value> unused,
                v8::Local<v8::Context> context,
                void* priv) {
  mate::Dictionary dict(context->GetIsolate(), exports);
  dict.SetMethod("getHiddenValue", &GetHiddenValue);
  dict.SetMethod("setHiddenValue", &SetHiddenValue);
  dict.SetMethod("deleteHiddenValue", &DeleteHiddenValue);
  dict.SetMethod("getObjectHash", &GetObjectHash);
  dict.SetMethod("takeHeapSnapshot", &TakeHeapSnapshot);
  dict.SetMethod("setRemoteCallbackFreer", &atom::RemoteCallbackFreer::BindTo);
  dict.SetMethod("setRemoteObjectFreer", &atom::RemoteObjectFreer::BindTo);
  dict.SetMethod("createIDWeakMap", &atom::api::KeyWeakMap<int32_t>::Create);
  dict.SetMethod(
      "createDoubleIDWeakMap",
      &atom::api::KeyWeakMap<std::pair<std::string, int32_t>>::Create);
  dict.SetMethod("requestGarbageCollectionForTesting",
                 &RequestGarbageCollectionForTesting);
  dict.SetMethod("isSameOrigin", &IsSameOrigin);
}
}  
NODE_LINKED_MODULE_CONTEXT_AWARE(atom_common_v8_util, Initialize)