fail handler adds fn to this.emit('error')
0.1.4