Post https://github.com/electron/electron/pull/18924 we shouldn't be patching `CompileAndCall` into our node fork, instead that method can quite easily live in our code as a helper.
shell/renderer/atom_renderer_client.cc
injected_frames_.insert(render_frame);
  
  
  if (!node_integration_initialized_) {
    node_integration_initialized_ = true;
    node_bindings_->Initialize();
    node_bindings_->PrepareMessageLoop();
  }
  
  if (!node::tracing::TraceEventHelper::GetAgent())
    node::tracing::TraceEventHelper::SetAgent(node::CreateAgent());
  
  DCHECK(node::InitializeContext(renderer_context));
  node::Environment* env =
      node_bindings_->CreateEnvironment(renderer_context, nullptr, true);
  
  
  if (command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides))
    env->ForceOnlyContextAwareNativeModules();
  env->WarnNonContextAwareNativeModules();
  environments_.insert(env);
  
  electron_bindings_->BindTo(env->isolate(), env->process_object());
  AddRenderBindings(env->isolate(), env->process_object());
  gin_helper::Dictionary process_dict(env->isolate(), env->process_object());
  process_dict.SetReadOnly("isMainFrame", render_frame->IsMainFrame());
  
  node_bindings_->LoadEnvironment(env);
  if (node_bindings_->uv_env() == nullptr) {