Цепочка из Promise ооблегчает написания кода для определенных сочетаний асинхронных событий.
Идея состоит в том, что помещать return new Promise() в теле функции. Вызов такой функции генерирует первый промис. Затем в цепочке .then() помещается имя функции с promise. Метод .then() вызывает функцию по имени и тем самым генерирует следующий promise в цепочке. Последним
function a () {return new Promise () }
function b () {return new Promise () }
function c () {return new Promise () }
b().then(a)
.then(a)
.then(c)
.then(data => console.log('делеам что-то'))
В примере ниже продемонстрировано как добиться срабатывния на уникальную последовательность нажатия кнопок. Нажатие BAAC будет выведено на экран. Нажатие других сочетаний будет проигнорировано и будет выводиться только последняя нажатая буква.