Building a system using uni-directional data flow is a great goal. It's a desirable characteristic and one that Aurelia supports through it's one-way data-bindings. We also support this through strict component encapsulation. However, it's important to realize that not all systems can be built this way in their entirety. In meetings, both the Angular 2 and React teams have admitted that complex applications will almost always contain cycles, and that uni-directional data flow is not possible in those scenarios.
In summary, I think it's a design principle that should be strived for but that you should realize that there are reasons to break the rules. Part of being a good developer or architect is understanding where and when that needs to happen.
With respect to Flux, I would just want everyone to realize that there are various ways to achieve uni-directional data flow. Sometimes, something like Flux is an over-complication. You can achieve something similar by following a standard Repository+Event Aggregator pattern (drawing from Fowler's PoEAA and Evan's DDD ideas).