Today people want highly responsive, interactive applications with strong user experience, which often means dealing with Asynchronicity, especially when the apps are about high-load, real-time data and multi-userness. As Java is an object-oriented language that inherently supports the imperative programming style, asynchronicity is quite a troublesome issue that can turn the code into complete hell. ...