code: function Server (options, connectionListener) {
    if (!(this instanceof Server)) return new Server(options, connectionListener)
    EventEmitter.call(this)
  
    if (typeof options === 'function') {
      connectionListener = options
      options = {}
      this.on('connection', connectionListener)
    } else if (options == null || typeof options === 'object') {
      options = options || {}
  
      if (typeof connectionListener === 'function') {
        this.on('connection', connectionListener)
      }
    } else {
      throw new TypeError('options must be an object')
    }
  
    this._connections = 0
  
    Object.defineProperty(this, 'connections', {
      get: deprecate(() => this._connections,
        'Server.connections property is deprecated. ' +
        'Use Server.getConnections method instead.'),
      set: deprecate((val) => (this._connections = val),
        'Server.connections property is deprecated.'),
      configurable: true,
      enumerable: false
    })
  
    this.id = null // a number > 0
    this.connecting = false
  
    this.allowHalfOpen = options.allowHalfOpen || false
    this.pauseOnConnect = !!options.pauseOnConnect
    this._address = null
  
    this._host = null
    this._port = null
    this._backlog = null
  }
docs: Class: net.Server
  =================
  
  This class is used to create a TCP server.
  
  Event: 'listening'
  Emitted when the server has been bound after calling server.listen.
  
  Event: 'connection'
  - Socket object The connection object
  Emitted when a new connection is made. socket is an instance of net.Socket.
  
  Event: 'close'
  Emitted when the server closes. Note that if connections exist, this event
  is not emitted until all connections are ended.
  
  Event: 'error'
  - Error Object
  Emitted when an error occurs. The 'close' event will be called directly
  following this event. See example in discussion of server.listen.