| Цитата: | 
	| Так что я бы не отказался поподробнее узнать, чем плохи promise'ы или как их "правильно" реализовать. | 
	
Асинхронный код, неудобная обработка ошибок. Эти проблемы решают async / await, которые по сути являются сахаром над Promise и хорошо зарекомендовали себя в других языках. В ES7 ожидается поддержка, но с Babel можно юзать уже сейчас.
async function foo() {
    try {
      const data = await getData();
      const more = await [getMoreData(), getMoreData()];
    
    } catch (err) {
      ...
    }
}
	
	| Цитата: | 
	| И по поводу потоков, нужны именно потоки, или worker'ы тоже подойдут? | 
	
Я был бы рад и воркерам.