epipebomb

Destroy EPIPE errors when stdout runs through a truncated pipe

npm install epipebomb
107 downloads in the last day
137 downloads in the last week
306 downloads in the last month

EPIPE Bomb

By default, node throws EPIPE errors if process.stdout is being written to and a user runs it through a pipe that gets closed while the process is still outputting (eg, the simple case of piping a node app through head).

This seemed a little overzealous to me, so I wrote this to suppress such errors.

Before

example.js

;(function log() {
  console.log('tick')
  process.nextTick(log)
})()

Oh the humanity

$ node example.js | head
tick
tick
tick
tick
tick
tick
tick
tick
tick
tick

events.js:66
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: write EPIPE
    at errnoException (net.js:782:11)
    at Object.afterWrite (net.js:600:19)

After

example.js

require('epipebomb')()

;(function log() {
  console.log('tick')
  process.nextTick(log)
})()

Oh the joy!

$ node example.js | head
tick
tick
tick
tick
tick
tick
tick
tick
tick
tick

Notes

Only the EPIPE error is captured on process.stdout - all other errors are thrown as per usual.

npm loves you