docs: function (topic, callback) {
          if (!func.isFunction(callback)) {
              throw new Error("callback must be a function");
          }
          var handle = {
              topic: topic,
              cb: callback,
              pos: null
          };
          var list = listeners[topic];
          if (!list) {
              list = (listeners[topic] = []);
          }
          list.push(handle);
          handle.pos = list.length - 1;
          return handle;
      }