`FakeResponse` is meant to be given as a response to requests issues using `requests`. For example, `FakeServer` stubs calls to `requests` and sends back a `FakeResponse` instance. The code we are testing is expecting a `Response` object, so we have two choices: mock out everything `Response` does, or subclass `Response` and give it only the things it needs.

I think the latter is a better approach because we can expect `Response` to follow its usual behaviour almost all the time, instead of needing to mimic it. Using the first approach, we would need to add stubbed methods every time we need a particular method in the code we are testing.