For modern connected apps, asynchronous programming is necessary to ensure responsiveness of devices and scalability of services. However, asynchronous programming tends to be a teeth-grinding quagmire of dynamically wired-up callbacks, busting any attempt at well-structured code and practically ensuring bugs and poor error handling. C# 5.0 changes all that. The new ‘async’ language feature along with futures/promises-based APIs bring back the good old imperative experience.
Watch this video on Oredev.org