docs: function requestExpiry(options) {
      assert.object(options, 'options');
      assert.optionalString(options.absoluteHeader, 'options.absoluteHeader');
      assert.optionalString(options.startHeader, 'options.startHeader');
      assert.optionalString(options.timeoutHeader, 'options.timeoutHeader');
  
      var useAbsolute = (options.absoluteHeader !== undefined);
      var absoluteHeaderKey = options.absoluteHeader;
      var startHeaderKey = options.startHeader;
      var timeoutHeaderKey = options.timeoutHeader;
  
      return function requestExpirationCheck(req, res, next) {
          var expiryTime;
  
          if (useAbsolute) {
              expiryTime = Number(req.headers[absoluteHeaderKey]);
          } else {
              // Use the start time header and add the timeout header to it
              // to arrive at the expiration time
              var startTime = req.headers[startHeaderKey];
              var timeout = req.headers[timeoutHeaderKey];
  
              if (startTime && timeout) {
                  expiryTime = Number(startTime) + Number(timeout);
              }
          }
  
          if (expiryTime) {
  
              // The request has expired
              if (Date.now() > expiryTime) {
                  return next(new GatewayTimeoutError('Request has expired'));
              }
          }
  
          // Happy case
          return next();
      };
  }