Пользовательская ошибка расширения класса в Blubird catch не работает - PullRequest
0 голосов
/ 05 октября 2018

Я использую ECMAScript 6, NodeJS 8.12 и Bluebird 3.5.2.

Я определил пользовательский класс ошибок:

class CustomError extends Error {
    constructor(message, someParameter) {
        super(message);
        this.name = 'CustomError';
        this.someParameter = someParameter;
    }
}

, и моя цепочка обещаний выглядит следующим образом:

doSomething()
    .catch(CustomError, error => { ... })
    .then(result => { ... })
    .catch(error => { LOGGER.error(`something went terribly wrong: ${error}`); }

После отклонения в doSomething() с CustomError, например:
new CustomError(error.message, parameterValue), появляется сообщение об ошибке:

something went terribly wrong: TypeError: Class constructor CustomError cannot be invoked without 'new'

Я указал это на оператор catch(CustomError, error =>,который для сбоя при TypeError требует catch(new CustomError, error =>.

Даже после этого CustomError перехват не выполняется.

Мой вопросесть, почему это происходит?
Это ограничение Bluebird?

Наконец, я видел этот вопрос , и это не относится к моему делу, так как яне использовать Babel, а также этот вопрос , который означает, что мой подход должен работать (случай ES6 в ответе).

...