code: function (trigger, callback) {
      var self = this;
      var id = self.nextId++;
      self.listeners[id] = {trigger: EJSON.clone(trigger), callback: callback};
      if (self.factName && Package.facts) {
        Package.facts.Facts.incrementServerFact(
          self.factPackage, self.factName, 1);
      }
      return {
        stop: function () {
          if (self.factName && Package.facts) {
            Package.facts.Facts.incrementServerFact(
              self.factPackage, self.factName, -1);
          }
          delete self.listeners[id];
        }
      };
    }
docs: Listen for notification that match 'trigger'. A notification matches if it has the key-value pairs in trigger as a subset. When a notification matches, call 'callback', passing the actual notification.  Returns a listen handle, which is an object with a method stop(). Call stop() to stop listening.  XXX It should be legal to call fire() from inside a listen() callback?