Cuando rechazar / resolver una promesa

Estoy pensando cuándo exactamente debo rechazar una promesa. Encontré un par de preguntas sobre este tema, pero no pude encontrar una respuesta adecuada.¿Cuándo debo rechazar una promesa?

Este artículohttp://howtonode.org/6666a4b74d7434144cff717c828be2c3953d46e7/promises dice:

Resolver: una Promesa exitosa se 'resuelve', lo que invoca a los oyentes de éxito que están esperando y recuerda el valor que se resolvió para futuros oyentes de éxito adjuntos. La resolución se correlaciona con un valor devuelto.Rechazar: cuando se encuentra una condición de error, se 'rechaza' una Promesa que invoca a los escuchas de errores que están esperando y recuerda el valor que se rechazó para las escuchas de errores futuras que se adjuntan. El rechazo se correlaciona con una excepción lanzada.

¿Es esta la directriz principal? ¿Que solo se rechaza una promesa si se produce una excepción?

Pero en caso de una función como

findUserByEmail()

Espero que la función devuelva un usuario, de modo que pueda continuar la cadena sin verificar el resultado

findUserByEmail()
    .then(sendWelcomeBackEmail)
    .then(doSomeNiceStuff)
    .then(etc..)

¿Cuáles son las mejores prácticas comunes?

Respuestas a la pregunta(2)

Su respuesta a la pregunta