$q service that helps you run functions asynchronously, and use their return values (or exceptions) when they are done processing.
$q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred implementations, and the other which resembles ES6 (ES2015) promises to some degree.