Hi Lucas,
Regarding async and streams, I will write a blog post next week, which will present just that. In short — systems trigger services which execute long running services, or subscribe to stream. When the data is resolved, they put the data into entities / components and this makes system process the data and observing widgets rebuild their children.
I am not 100% sure what you mean by dispose mechanism. By marking a system as CleanupSystem, we have a possibility to execute this system after all Execute / Reactive systems are done executing. There is no other magic involved. What you can do is to make one class implement ExecuteSystem and CleanupSystem, this way you know that the execute
method will be called first and the cleanup
method will be called only when all the other execute
methods of all the other ExecuteSystems is called. This kind of 2 phase execution is most helpful for cleaning up the state, but it is up to you if you want to use it at all, or would like to misuse it for other purposes.
I hope it makes sense.