¿Es posible recuperarse de un error de flujo de nodo? Por ejemplo, con promesas puedes hacer algo como
async function getThumbnail(id, width, height) { try { const thumbnail = await readThumbnail(id, width, height); return thumbnail; } catch { // The thumbnail doesn't exist, so we will create and cache it const thumbnail = await createThumbnail(id, width, height); return thumbnail; } } Si readThumbnail() devuelve una transmisión en lugar de una promesa, ¿es posible recuperarse de un error de transmisión si la miniatura no existe? El objetivo es que el método getThumbnail() siempre devuelva un flujo de trabajo, independientemente de si la miniatura existe o no.
Encontré una manera de hacerlo usando una tercera secuencia.
function getThumbnail(id, width, height) { const readable = new PassThrough(); readThumbnail(id, width, height) // It is important that this error handler is above the pipe .on('error', error => { createThumbnail(id, width, height).pipe(readable); }) .pipe(readable); return readable; }