Ya sea una promesa ES6 o una promesa Bluebird, Q Promise, etc.
¿Cómo pruebo para ver si un objeto dado es una promesa?
.thenmétodo que no sea una Promesa, no se comporte como una Promesa y no tuviera la intención de ser utilizado como una Promesa. Buscar un .thenmétodo solo te dice que si el objeto no tiene un .thenmétodo, entonces no tienes una Promesa. La inversa - que la existencia de unos .thenmedios método que haces tiene una promesa - no es necesariamente cierto.
.thenmétodo. Sí, eso tiene el potencial de falsos positivos, pero se supone que todas las bibliotecas prometedoras dependen (porque eso es todo en lo que pueden confiar). La única alternativa hasta donde puedo ver es tomar la sugerencia de Benjamin Gruenbaum y ejecutarla a través del conjunto de pruebas de promesa. Pero eso no es práctico para el código de producción real.
.thenmétodo, pero eso no le diría que lo que tiene es una Promesa definitivamente. Todo lo que sabría en ese momento es que tiene algo que expone un.thenmétodo, como una Promesa.