My app uses unidici 8.7.0 to download files from CloudFlare R2:
const fast_dispatcher = new Agent().compose(interceptors.redirect({maxRedirections: 5}));
function get_download_stream_fast(url){
return request(url, {
dispatcher: fast_dispatcher,
signal: AbortSignal.timeout(30000)
}).then(function({statusCode, body}){
if(statusCode >= 200 && statusCode < 300){
return body;
}
body.dump(); //free the connection, we don't use the body
throw new Error(`HTTP ${statusCode} for: ${url}`);
});
}
My app also monitors for uncaughtException errors:
process.on('uncaughtException', function(err) {
console.log( "[UNCAUGHT EXCEPTION] " + err.stack || err.message );
process.exit(1);
});
I am regularly seeing these in my logs (which seems to correlate with downloads hitting the 30s timeout above).
[UNCAUGHT EXCEPTION] SocketError: other side closed
at TLSSocket.onHttp2SocketEnd (/frontend/node_modules/undici/lib/dispatcher/client-h2.js:661:22)
at TLSSocket.emit (node:events:531:35)
at endReadableNT (node:internal/streams/readable:1698:12)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21)
Perhaps the CDN is not always 100% reliable. Is there a way to catch these exceptions, or should I just ignore them?
My app uses
unidici 8.7.0to download files from CloudFlare R2:My app also monitors for
uncaughtExceptionerrors:I am regularly seeing these in my logs (which seems to correlate with downloads hitting the 30s timeout above).
[UNCAUGHT EXCEPTION] SocketError: other side closed at TLSSocket.onHttp2SocketEnd (/frontend/node_modules/undici/lib/dispatcher/client-h2.js:661:22) at TLSSocket.emit (node:events:531:35) at endReadableNT (node:internal/streams/readable:1698:12) at process.processTicksAndRejections (node:internal/process/task_queues:89:21)Perhaps the CDN is not always 100% reliable. Is there a way to catch these exceptions, or should I just ignore them?