"use strict"; module.exports = function attachReadableStreamHandlers({ stream, onClose, onError, onData }) { function detachEventHandlers() { stream.removeListener("end", onCloseWrapper); stream.removeListener("close", onCloseWrapper); stream.removeListener("error", onErrorWrapper); stream.removeListener("data", onData); } function attachEventHandlers() { stream.on("end", onCloseWrapper); stream.on("close", onCloseWrapper); stream.on("error", onErrorWrapper); stream.on("data", onData); } function onCloseWrapper() { onClose(); detachEventHandlers(); } function onErrorWrapper(error) { onError(error); detachEventHandlers(); } attachEventHandlers(); };