Sorry guys! (I shouldn't work on this without being really focused)
- Reverting the process.nextTick to something which should really work
- Adding a function to work around multiple emits of 'end'