code: function ThaliNotificationServer(router, ecdhForLocalDevice,
                                   millisecondsUntilExpiration) {
  
    assert(router, 'router must not be null or undefined');
    assert(ecdhForLocalDevice,
      'ecdhForLocalDevice must not be null or undefined');
  
    assert(millisecondsUntilExpiration > 0 &&
      millisecondsUntilExpiration <= NotificationBeacons.ONE_DAY,
      'millisecondsUntilExpiration must be > 0 & < ' +
      NotificationBeacons.ONE_DAY);
  
    this._router = router;
    this._ecdhForLocalDevice = ecdhForLocalDevice;
    this._millisecondsUntilExpiration = millisecondsUntilExpiration;
    this._promiseQueue = new PromiseQueue();
    this._firstStartCall = true;
    this._preambleAndBeacons = null;
    this._secrets = null;
  }
docs: @module thaliNotificationServer 
  @classdesc This class will register the path to retrieve beacons on the
  submitted router object and handle any beacon requests. This class uses
  our promise queue to simplify dealing with concurrency so all calls will
  automatically be serialized.
  
  @param {Object} router An express router object that the class will use
  to register its path.
  @param {ECDH} ecdhForLocalDevice A Crypto.ECDH object initialized with the
  local device's public and private keys
  @param {number} millisecondsUntilExpiration The number of milliseconds into
  the future after which the beacons should expire.
  @constructor