meteor/minimongo/minimongo.js
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);
        });
      };
    }
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);
        });
      };
    }
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 ) ; } ) ; } ; }
furthermore, callbacks enqueue until the operation we're working on is done.
furthermore callbacks enqueue until the operation we re working on is done .