&gt; Glitches as demonstrated via the diamond pattern can be avoided by traversing the graph in topological order.<p>This is correct for DAGs which only propagate <i>value</i> (as in Javelin[1] and my own library DerivableJS[2]), but for graphs which propagate events (as in Rx), topological sorting would only work for those parts of the graph which are <i>effectively</i> propagating value. Events don&#x27;t have an inherent dedupe operation, so it is very difficult to even imagine ways in which glitch avoidance could be automatically enforced. It would certainly require semantic program analysis.<p>Personally I think we should be avoiding the proliferation of events (as encouraged by Rx enthusiasts) for exactly this reason. Their imperative nature makes them very difficult to reason about.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;hoplon&#x2F;javelin" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;hoplon&#x2F;javelin</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;ds300&#x2F;derivablejs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ds300&#x2F;derivablejs</a>