Throw an IOException instead? Much more likely to yield expected behavior, especially since that's what'll throw if it gets canceled while reading the response body.