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/common/api/atom_api_asar.cc
const base::FilePath& path) {
  mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
  base::FilePath asar_path, file_path;
  if (asar::GetAsarArchivePath(path, &asar_path, &file_path, true)) {
    dict.Set("isAsar", true);
    dict.Set("asarPath", asar_path);
    dict.Set("filePath", file_path);
  } else {
    dict.Set("isAsar", false);
  }
  return dict.GetHandle();
}
void Initialize(v8::Local<v8::Object> exports,
                v8::Local<v8::Value> unused,
                v8::Local<v8::Context> context,
                void* priv) {
  gin_helper::Dictionary dict(context->GetIsolate(), exports);
  dict.SetMethod("createArchive", &Archive::Create);
  dict.SetMethod("splitPath", &SplitPath);
  dict.SetMethod("initAsarSupport", &InitAsarSupport);
}
}  
NODE_LINKED_MODULE_CONTEXT_AWARE(atom_common_asar, Initialize)