This is wrong. Well not wrong but it doesn't work the way it seems the author thinks it does. For comprehensions de-sugar in a way that isn't really great. See the first answer here. http://stackoverflow.com/questions/19045936/scalas-for-compr... .
Basically what he means with that code is: Do four things in parallel and then return the result. What his code ACTUALLY does is do 4 things in sequence in a non-blocking way. This isn't bad (certainly better than blocking for each step) but it misses the real value. He should fire the for futures and then use traverse or Future.sequence to combine them. It is uglier but actually achieves the intended result.