docs: function RevisionGuard (store, options) {
    options = options || {};
  
    var defaults = {
      queueTimeout: 1000,
      queueTimeoutMaxLoops: 3//,
      // startRevisionNumber: 1
    };
  
    _.defaults(options, defaults);
  
    this.options = options;
  
    if (!store || !_.isObject(store)) {
      var err = new Error('store not injected!');
      debug(err);
      throw err;
    }
  
    this.store = store;
  
    this.definition = {
      correlationId: 'correlationId', // optional
      id: 'id',                       // optional
      name: 'name',                   // optional
  //    aggregateId: 'aggregate.id',    // optional
  //    context: 'context.name',        // optional
  //    aggregate: 'aggregate.name',    // optional
      payload: 'payload'              // optional
  //    revision: 'revision'            // optional
  //    version: 'version',             // optional
  //    meta: 'meta'                    // optional, if defined theses values will be copied to the notification (can be used to transport information like userId, etc..)
    };
  
    this.queue = new Queue({ queueTimeout: this.options.queueTimeout });
  
    this.currentHandlingRevisions = {};
  
    this.onEventMissing(function (info, evt) {
      debug('missing events: ', info, evt);
    });
  }