Pattern
Disposable
One cancellation primitive for everything.
Where: src/utils/Disposable.ts (Disposable, DisposableBag).
The rule: any class that allocates a resource (listener, ticker handle,
reaction, Pixi object) implements Disposable. Parents dispose children in
their own dispose().
Why: the resource-leak bug you don't catch in review is a day-of-launch support ticket. One primitive, one contract, no surprises.
See Disposables concept for patterns.