638
}
639
};
641
>
// Error Listener
642
>
const errorListener = (error: Error) => {
643
streamListeners.dispose();
644
645
return reject(error);
646
};
648
>
// End Listener
649
>
const endListener = () => {
650
streamListeners.dispose();
651
652
return resolve({ stream, buffer, ended: true });
653
};
655
>
streamListeners.add(toDisposable(() => stream.removeListener('error', errorListener)));
656
>
stream.on('error', errorListener);
657
>
658
>
streamListeners.add(toDisposable(() => stream.removeListener('end', endListener)));
659
>
stream.on('end', endListener);
660
>
661
>
// Important: leave the `data` listener last because
662
>
// this can turn the stream into flowing mode and we
663
>
// want `error` events to be received as well.
664
>
streamListeners.add(toDisposable(() => stream.removeListener('data', dataListener)));
665
>
stream.on('data', dataListener);
666
>
});
667
>
}
668
669
/**