Закончил курс «автоматное программирование». В нем поведение программы описывается на основе математической модели конечных автоматов. Существует некоторое количство состояний, в которых программа может находится, а выполнение программы представляет собой вызов функций перехода из одного состояния в другое. В курсе знакомят с библиотекой на джаваскрипте, при помощи которой эту модель можно реализовать: https://github.com/jakesgordon/javascript-state-machine

В целом эта абстракция настолько простая и понятная, что после продолжительных попыток разобраться с прототипами и коллбеками, курс про автоматы кажется прямо-таки глоктком свежего воздуха. Хочется посмотреть, как это применяется на практике, а то сам пока не очень представляю.