Turns out the reason here was an SSL error between UE and my server. UE didn’t trust the certificate authority of my server, and gave up on the HTTP request. When that happens, no error callback is triggered for some reason.
My first workaround was to use HTTP instead of HTTPS for all calls. I then found that the fix from https://answers.unrealengine.com/questions/840027/when-playing-in-the-editor-websocket-connection-su.html fixes it; copying the cacert.pem file from engine to the project and packaging it.