Che si tratti di una promessa ES6 o di una promessa bluebird, una promessa Q, ecc.
Come posso verificare se un determinato oggetto è una promessa?
.thenmetodo che non è una Promessa, non si comporta come una Promessa e non aveva intenzione di essere usato come una Promessa. Il controllo di un .thenmetodo ti dice solo che l'oggetto if non ha un .thenmetodo, quindi non hai una Promessa. L'inverso - che l'esistenza di un .thenmezzo metodo che si fa hanno una promessa - non è necessariamente vero.
.thenmetodo. Sì, questo ha il potenziale per falsi positivi, ma è il presupposto che tutte le biblioteche promesse facciano affidamento (perché è tutto ciò su cui possono contare). L'unica alternativa per quanto posso vedere è prendere il suggerimento di Benjamin Gruenbaum ed eseguirlo attraverso la suite di test promettenti. Ma questo non è pratico per il vero codice di produzione.
.thenmetodo, ma ciò non ti direbbe che ciò che hai è una Promessa definitivamente. Tutto quello che sapresti a quel punto è che hai qualcosa che espone un.thenmetodo, come una Promessa.