Classmethods are inherently public. Prefixing this with an `_` is ugly and unnecessary. That aside, why is this even necessary? Why is `__init__` not allowed to handle this? It could look like:

```python
def __init__(self, request, response, session, adapter_args):
    self.session = session
    self.adapter_args = adapter_args
    self.original_request = request
    self.response_chain = [response]
```