Ответ 1
Если вы не хотите готовых решений, и вместо этого вы хотите реализовать все алгоритмы самостоятельно, тогда прочитайте статьи, упомянутые в статье в Википедии: Фьючерсы и promises и спецификации для Promises/A и Promises/А +.
И чтобы убедиться, что вы делаете это правильно, прочитайте Вы потеряли точку promises Доменик Деникола и см. Тесты соответствия для Promises/A +.
Если, с другой стороны, вы решили, что не стоит изобретать велосипед (если только он не предназначен для образования), и в этом случае непременно заново изобретите как можно больше колес), тогда взгляните на RSVP.js, легкая библиотека, которая предоставляет инструменты для организации асинхронного кода. RSVP.js используется, например, Ember.js.