docs: function emitError(pw, err, async, args, end, ignores) {
      if (err && (!ignores || !err.code || !!~ignores.indexOf(err.code))) {
          var m = (typeof async === 'string' && !/^[^a]{0,}sync/i.test(async)) || async ? pw.emitAsync : pw.emit;
          if (args) {
              var ea = [pw.options.errorEvent, err];
              ea.push.apply(ea, args);
              m.apply(pw, ea);
              if (end) m.apply(pw, ea);
          } else {
              m.call(pw, pw.options.errorEvent, err);
              if (end) m.call(pw, pw.options.endEvent, err);
          }
          return err;
      }
  }