docs: function asyncd(pw, evts, fname, args) {
      var es = Array.isArray(evts) ? evts : [evts];
      for (var i = 0; i < es.length; i++) {
          if (es[i]) {
              defer(asyncCb.bind(es[i]));
          }
      }
      function asyncCb() {
          var argsp = args && args.length ? [this] : null;
          if (argsp) {
              argsp.push.apply(argsp, args);
              pw[fname].apply(pw, argsp);
          } else pw[fname](this);
      }
      return pw;
  }