Lo prometido es deuda (bien lo saben las funciones) y he encontrado un momento para empezar a explicar la forma en la que he implementado el patrón Promise en mi caso, no tiene porqué ser la mejor, pero cumple con su cometido.
NOTA: Me gustaría implementarla en Test Driven Development, pero ya es bastante para quien lee y para el que escribe seguir la implementación como para encima añadir TDD, pero no quisiera dejar de recomendarlo.
Primero: Funcionalidad básica
Lo que necesitamos de un objeto Promise es:
- Crear instancias totalmente independientes
- Añadirle callbacks que serán llamados cuando se cumpla la promesa
- Notificarle cuando se ha cumplido la promesa