ClojureScript обзавёлся async/await — теперь асинхронность не болит

В ClojureScript наконец завезли async/await — и это не очередной макрос, а родная поддержка.
В мире ClojureScript случилось то, чего ждали с замиранием сердца (и с нервным тиком при виде callback-ов): язык получил нативную поддержку async/await. Да, вы не ослышались — теперь можно писать асинхронный код, который не выглядит как шифр древних майя.
Раньше асинхронность в ClojureScript напоминала попытку собрать IKEA-стеллаж без инструкции: вроде бы всё есть (core.async, promises, futures), но чтобы это работало, приходилось жонглировать макросами и молиться, чтобы ничего не упало. Новый синтаксис обещает быть таким же лаконичным, как и всё в Clojure, но без лишней магии.
Разработчики, которые перетащили async/await из мира JavaScript, наверняка чувствуют себя как дома. Только вместо привычных await и async — свои, кложурные, но суть та же: меньше бойлерплейта, больше читаемости. И да, это не очередной хайп — это реально полезная фича, которая упростит жизнь всем, кто пишет на ClojureScript под браузер или Node.js.
Конечно, найдутся скептики, которые скажут: «А зачем? core.async же есть!» Но попробуйте объяснить новичку, как работает go-loop и каналы, когда он просто хочет сделать fetch запрос. С async/await порог входа снижается, а код становится понятнее даже для тех, кто не ел собаку на функциональщине.
Комментарий студии METABYTE: Мы в METABYTE давно заметили, что асинхронность — это та ещё боль, независимо от языка. Рады, что ClojureScript сделал шаг навстречу разработчикам — теперь меньше времени на дебаг коллбэков, больше на создание крутых продуктов. А если ваш стек всё ещё страдает от асинхронного ада — мы знаем, как это исправить.