¿Debo lanzar un error o devolver una promesa rechazada dentro de una función asíncrona? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Debería una API asíncrona lanzar sincrónicamente alguna vez? 3 respuestas

Estoy trabajando con las promesas proporcionadas por elAWS JS SDK. La esencia de lo que estoy haciendo cuando creo una función asíncrona que envuelve el SDK de AWS se ve así:

module.exports.myCustomFunction = input => {

    if (badInput) {
        throw new Error('failed') // <-- This is they key line
    }

    return sns.createTopic(someParams).promise()
}

// The caller looks like this:
myModule.myCustomFunction(someInput).then(result => {
    // carry on
})
.catch(err => {
    // do something with the error
})

Me contactó alguien que dijo que nunca debería arrojar un error dentro de este tipo de funciones basadas en promesas. Ellos sugirieron regresarPromise.reject('failed') en lugar. Para ser honesto, todavía no estoy muy versado en las promesas, por lo que su explicación me pasó por la cabeza.

Respuestas a la pregunta(3)

Su respuesta a la pregunta