docs: function (obj, method, cb, scope) {
          var index,
              listeners;
          if (typeof method !== "string") {
              throw new Error("When calling connect the method must be string");
          }
          if (!func.isFunction(cb)) {
              throw new Error("When calling connect callback must be a string");
          }
          scope = obj || global;
          if (typeof scope[method] === "function") {
              listeners = scope[method].__listeners;
              if (!listeners) {
                  var newMethod = wrapper();
                  newMethod.func = obj[method];
                  listeners = (newMethod.__listeners = []);
                  scope[method] = newMethod;
              }
              index = listeners.push(cb);
          } else {
              throw new Error("unknow method " + method + " in object " + obj);
          }
          return [obj, method, index];
      }