Hm, I still think there must be some kind of network infrastructure that interrupts the request when it doesn't send a response in 30s....

What if you try a template that waits 40s, like a template with this in the helpers

await new Promise((resolve) => setTimeout(resolve, 40000)

Does that fail on the same error?

If yes, then can you try to install jsreport on your local and try to render it locally, does that fail as well?