docs: function(options) {
      options = options ? extend({}, options) : {};
      if (options.parse === void 0){
        options.parse = true;
      }
      var collection = this;
      var listener = {};
      var listenerKey;
  
      options.cb = options.callback;
      options.callback = function (err, response){
        callback(err, collection, response, options);
      };
  
      options.respCallback = function cb(data, cbServer){
        var method = options.reset ? 'reset' : 'set';
        collection.removeListeners([collection.events.onFetch]);
        if(cbServer){
          cbServer();
        }
        if(data.err){
          return callback(data.err, collection, data, options);
        }
        collection[method](data.response, options);
        callback(data.err, collection, data, options);
      };
  
      listenerKey = this.events.onFetch;
      listener[listenerKey] = {fn: options.respCallback, active: true};
      this.addListeners(listener);
      this.emit(this.events.fetch, this, options);
      return collection;
    }