By now, I hope I have proved to you that you can write reactive applications using core.async. It's an extremely powerful and flexible concurrency model with a rich API. If you can design your solution in terms of queues, it is more than likely that core.async is the tool you want to reach for.
This version of the stock market application is shorter and simpler than the version that uses only the standard Java API we developed earlier in this book in Chapter 3, Asynchronous Programming and Networking. For instance, we didn't have to worry about thread pools. On the other hand, it feels like it is a little more complex than the version we implemented using Reactive Extensions in Chapter 3, Asynchronous Programming and Networking.
This is because core.async operates at a lower level of abstraction when compared to other frameworks. This became especially obvious...