docs: function (f, fieldsIndex, ignoreEmptyFields) {
        if (!f)
          return function () {};
        return function (/*args*/) {
          var context = this;
          var args = arguments;
  
          if (self.collection.paused)
            return;
  
          if (fieldsIndex !== undefined && self.projectionFn) {
            args[fieldsIndex] = self.projectionFn(args[fieldsIndex]);
            if (ignoreEmptyFields && _.isEmpty(args[fieldsIndex]))
              return;
          }
  
          self.collection._observeQueue.queueTask(function () {
            f.apply(context, args);
          });
        };
      }