code: function Socket (options, listener) {
    var self = this
    EventEmitter.call(self)
    if (typeof options === 'string') options = { type: options }
    if (options.type !== 'udp4') throw new Error('Bad socket type specified. Valid types are: udp4')
  
    if (typeof listener === 'function') self.on('message', listener)
  
    self._destroyed = false
    self._bindState = BIND_STATE_UNBOUND
    self._bindTasks = []
  }
docs: Class: dgram.Socket
  
  The dgram Socket class encapsulates the datagram functionality. It should
  be created via `dgram.createSocket(type, [callback])`.
  
  Event: 'message'
  - msg Buffer object. The message
  - rinfo Object. Remote address information
  Emitted when a new datagram is available on a socket. msg is a Buffer and
  rinfo is an object with the sender's address information and the number
  of bytes in the datagram.
  
  Event: 'listening'
  Emitted when a socket starts listening for datagrams. This happens as soon
  as UDP sockets are created.
  
  Event: 'close'
  Emitted when a socket is closed with close(). No new message events will
  be emitted on this socket.
  
  Event: 'error'
  - exception Error object
  Emitted when an error occurs.