Oh -- of course!  

The problem is that when `name` doesn't exist, `None` is returned rather than a `KeyError` being raised (as would happen if this were a normal dictionary) -- and [`KeyError` being raised is what tells Django to take the next step, and check to see if there's a property matching that name](https://docs.djangoproject.com/en/dev/ref/templates/api/#variables-and-lookups).  I can make this work for both of us by just changing this to something like

```
def __getitem__(self, name):
    value = self._get_rehydrated_headers()[name]
    if value is None:
        raise KeyError('A header named %s does not exist' % name)
    return value
```