Michael,
Actually, while I was waiting I did a test---I can successfully cancel
an upload, but I get no ready state change after I manually abort.
Abort the send()
algorithm, set the response entity body to "null", the error flag to "true" and remove any registered request headers.
The user agent should cancel any network activity for which the object is responsible.
If the state is UNSENT, OPENED and the send()
flag is "false", or DONE go to the next step.
Otherwise, switch the state to DONE, set the send()
flag to "false" and synchronously dispatch a readystatechange
event on the object.
Switch the state to UNSENT. (Do not dispatch the readystatechange
event.)