Seja uma Promessa ES6 ou Promessa bluebird, Q Promise, etc.
Como faço para testar se um determinado objeto é uma promessa?
.then
método que não seja uma promessa, não se comporte como uma promessa e não tenha intenção de ser usado como uma promessa. A verificação de um .then
método apenas informa que o objeto if não possui um .then
método, então você não tem uma Promessa. O inverso - que a existência de um .then
meio de métodos que você faz tem uma promessa - não é necessariamente verdade.
.then
método. Sim, isso tem potencial para falsos positivos, mas é a suposição de que todas as bibliotecas promissoras dependem (porque é nisso que elas podem confiar). A única alternativa, até onde posso ver, é aceitar a sugestão de Benjamin Gruenbaum e executá-la no conjunto de testes promissores. Mas isso não é prático para o código de produção real.
.then
método, mas isso não lhe diria que o que você tem é uma promessa definitivamente. Tudo o que você saberia naquele momento é que você tem algo que expõe um.then
método, como uma Promessa.