code: function Server() {
    var this_Server = this;
    events.EventEmitter.call(this);
  
    this.$wildcards = map.create();
    this.$hosts = map.create();
    this.$eventNames = [];
  
    // When a caller adds a new listener, we need to see if it's an event name
    // we've never seen before; if so, we need to make sure this event gets
    // forwarded by all current and future HTTP server instances.
    this.on('newListener', function(eventName, listener) {
      // Never forward newListener, too confusing.
      if (eventName == 'newListener')
        return;
  
      // If this is an event name we've seen before, no need to do anything.
      if (_.contains(this.$eventNames, eventName))
        return;
  
      // Make all current servers forward this event.
      _.each(_.values(this.$wildcards).concat(_.values(this.$hosts)),
        function(server) {
          forwardEvent(server, this_Server, eventName);
        }
      );
  
      // Ensure all future servers forward this event.
      this.$eventNames.push(eventName);
    });
  }
docs: Presents the same events as a regular NodeJS HTTP server, but can listen on
  multiple host/port combinations at the same time. If distinguishing between
  the different hosts/ports is important, then look at request.host and
  request.port in the event listener.
  
  You can change the set of hosts/ports that are listened to on the fly by
  calling setAddresses multiple times. Any host/port combinations that are
  already being listened on are undisturbed; any obsoleted servers are shut
  down; and any new host/ports have new servers instantiated and started.