Articles in this topic
Cancel an in-flight upload cleanly — one controller per attempt, AbortSignal.any, and a stall clock driven by progress events instead of total duration.
Read article →Why xhr.timeout fires when it does, how to slide it forward from upload progress events, and how to tell ontimeout apart from a 504 or a dead socket.
Read article →Abort uploads that stop moving instead of waiting for a fixed timeout — an inactivity watchdog on progress events, sized per chunk, feeding the retry path.
Read article →Use navigator.onLine and the offline/online events as hints, not truth — pause and resume uploads on them, then confirm reachability with a real request.
Read article →