Yup, you are right, I lost this cancellation check.

I will move it down into PackOutputStream's write method, and will have it check every 128 KiB of output.  That way we can actually cancel even in the middle of a massive object that is being reused as-is from the underlying store.