# Why "root context" is the coherent fallback for "dispatch context"
We have two components: Red and Blue. From a component's point of view, there is "me" and "other", where "other" can be either the outer environment or another component.
```javascript
// component-red
const redVar = new AsyncContext.Variable({
defaultValue: "empty"
});
redVar.run("something", () => {
eventTarget.addEventListener("some-event", () => {
console.log(`red: ${redVar}`);
});
eventTarget.dispatchEvent(new CustomEvent("some-event"));
});
```
```javascript
// component-blue
const blueVar = new AsyncContext.Variable({
defaultValue: "empty",
});
blueVar.run("something", () => {
eventTarget.dispatchEvent(new CustomEvent("some-event"));
});
```
- **If going always by registration context**
- When the event is dispatched by Red, it logs `red: something`
- When the event is dispatched by Blue, it logs `red: something`
- When the event is dispatched by the browser, it logs `red: something`
Thus, the cases in which the events are dispatched by non-Red are coherent :heavy_check_mark:
- **If going by dispatch context, with registration context as the fallback**
- When the event is dispatched by Red, it logs `red: something`
- When the event is dispatched by Blue, it logs `red: empty`
- When the event is dispatched by the browser, it logs `red: something`
Thus, the cases in which the events are dispatched by non-Red are not coherent :x:
- **If going by dispatch context, with root context as the fallback**
- When the event is dispatched by Red, it logs `red: something`
- When the event is dispatched by Blue, it logs `red: empty`
- When the event is dispatched by the browser, it logs `red: empty`
Thus, the cases in which the events are dispatched by non-Red are coherent :heavy_check_mark: