Leer solicitudes en espera de flujo terminado

Estoy usando pngjs para leer y escribir algunos PNG. Recibo este error periódicamente:

Error: There are some read requests waiting on finished stream at ChunkStream._end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/chunkstream.js:107:13) at ChunkStream.end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/chunkstream.js:94:14) at PNG.end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/png.js:105:18) at ReadStream.onend (_stream_readable.js:483:10) at ReadStream.g (events.js:175:14) at ReadStream.EventEmitter.emit (events.js:117:20) at _stream_readable.js:910:16 at process._tickCallback (node.js:415:13) 

Pero no me da un número de línea dentro de mi progtwig.

Sin embargo, solo trato con flujos en algunos lugares, son:

 fs.createReadStream(oldScreen).pipe(new PNG).on('parsed', function() { promises[0].resolve(this); }); fs.createReadStream(newScreen).pipe(new PNG).on('parsed', function() { promises[1].resolve(this); }); 

Y

 result.png.pack().pipe(fs.createWriteStream(diffName)); 

Los tres nombres de archivo nunca son iguales, por lo que no deben estar leyendo / escribiendo en el mismo lugar. Supongo que es posible que una secuencia no se haya cerrado correctamente a partir de una ejecución anterior fallida. ¿Hay alguna manera de forzar que todas las streams se cierren bien?

Dos sugerencias:

  1. Use longjohn , puede proporcionar números de línea dentro de su código. (La excepción ocurre en un bloque asíncrono, por lo que su seguimiento de stack no contiene su progtwig, solo se astack con el controlador de tick en el bucle principal de V8).

  2. Parece que el problema es que alguien está intentando leer desde un flujo que acaba de “finalizar” (se cerró o llegó a su fin y la capa subyacente marcó “final”).