Optional ReadonlysignalAbort the upload.
A HUNG upload is worse than a failed one (#2798). A rejection is counted, retried and can trip a caller's failure ceiling; a request that never settles produces no failure at all, so nothing retries, no ceiling trips, and a seed simply never resolves while the UI reports work in progress. That is absence being indistinguishable from success, which is what let the #2790 outage run for weeks.
Implementations that cannot honour it must ignore it rather than throw: an in-memory store completes synchronously and has nothing to abort.
Per-call options for BlobStore.put.