Выдача ошибки из потока преобразования Node.js
Мне нужно выдать ошибку в потоке Transform.
Обычно я делаю это с функцией обратного вызова в . Я не могу в своей ситуации, потому что мне нужно выдать ошибку, даже если в данный момент через мой поток не проходят данные. То есть, если данные не передаются, не вызываются и нет обратного вызова, который я могу вызвать.
В настоящее время я испускаю ошибку. Что-то вроде этого:
import { Transform } from 'stream';
export default class MyTransformStream extends Transform {
constructor(opts) {
super(opts);
setTimeout(() => {
this.emit('error', new Error('Some error!'));
}, 10_000);
}
_transform(chunk, encoding, callback) {
this.push(chunk);
callback();
}
}
Кажется, это работает нормально. Однако в документации есть хорошее предупреждение об этом:
Избегайте переопределения общедоступных методов, таких как write(), end(), cork(), uncork(), read() и destroy(), или генерации внутренних событий, таких как "ошибка", "данные", "конец", "финиш". ' и 'закрыть' через .emit(). Это может нарушить текущие и будущие инварианты потоков, что приведет к проблемам поведения и/или совместимости с другими потоками, потоковыми утилитами и ожиданиями пользователей.
К сожалению, документация, похоже, не предлагает, что делать вместо этого.
Каков правильный способ выбросить эту ошибку за пределы
_transform()
вызов?