И кажется мне, что конструкт new Promise(...).then(...).then(...).then(...) очень похож на do-блок в Хаскелле, а сам метод Promise.prototype.then — на >>= (т.е. монадный bind) в оном же Хаскелле.
Мне приглючилось, или я угадал?
Можно ли в Хаскелле написать аналог промиса с использованием монад?