see http://jazzy.id.au/default/2012/11/02/scaling_scala_vs_java.html
Eg async call using monads to four clients:
for {
user <- getUserById(id)
orders <- getOrdersForUser(user.email)
products <- getProductsForOrders(orders)
stock <- getStockForProducts(products)
} yield stock
Futues are monadic and for comprehensions can be used to compose asynchronous code
In java well... start waiting Monads with Java 8