От ада коллбеков до асинхронных функций: как работа с асинхронностью в JavaScript улучшалась с выходом новых версий стандарта и что нас ждёт в светлом будущем с ES2016?