Devo lançar um erro ou retornar uma promessa rejeitada dentro de uma função assíncrona? [duplicado]

Esta pergunta já tem uma resposta aqui:

Uma API assíncrona deve ser lançada de forma síncrona? 3 respostas

Estou trabalhando com as promessas fornecidas peloAWS JS SDK. A essência do que estou fazendo quando crio uma função assíncrona que envolve o AWS SDK é assim:

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
})

Fui abordado por alguém que disse que nunca deveria lançar um erro dentro desse tipo de função baseada em promessas. Eles sugeriram retornarPromise.reject('failed') em vez de. Para ser sincero, ainda não sou tão versado em promessas, então a explicação delas meio que passou pela minha cabeça.

questionAnswers(3)

yourAnswerToTheQuestion