This already exists. You can always add stuff to the context by entering a new context, it will just override the keys from any parent contexts. If there is no conflict then it is effectively a union of the contexts.

```
enter_context({'foo': 'bar'})
enter_context({'baz': 'cheese'})

resolve_context() -> {'foo': 'bar', 'baz': 'cheese'}
```

So you can always implement your own middlware that mucks with the context however you see fit.