レンダラープロセスでファイルをダウンロードしたいのにどこを見てもメインプロセスに通知してそっちで処理するものばかり
シンプルにレンダラープロセス内だけで完結したい

普通に fetch してファイル書き込みだけでできた
CORS の制限は受けないみたい

const fs = require("fs")

const download = async (path, url) => {
const ab = fetch(url).then(res => res.arrayBuffer())
fs.writeFileSync(path, Buffer.from(ab))
}

download("file1.jpg", "http://example.com/image1.jpg")

ファイル書き込みは Node.js の機能を使うので nodeIntegration が必要

アプリ内管理のローカル HTML のページを開いてるので セキュリティ制限をする必要はなくて有効にしてるけど外部のウェブページを開くなら nodeIntegration は危険なのでメインプロセスでしたほうが良さそう
ただ contextIsolation が有効になってたらウェブページ側のスクリプトから Node.js API にアクセスできないし 直接外部サイトを BrowserWindow で開く場合でも preload 内の処理でこれでもいい気はしてる