docs: function getSocket(port, multicastAddress) {
      return new promise(function (resolve, reject) {
          try {
              var socket = dgram.createSocket({type: 'udp4', reuseAddr: true});
  
              socket.once('listening', function () {
                  socket._multicastAddress = multicastAddress;
                  socket._port = port;
                  socket.setBroadcast(true);
  
                  socket.setMulticastLoopback(true);
                  socket.setMulticastTTL(1);
                  socket.addMembership(socket._multicastAddress);
  
                  resolve(socket);
              });
  
              socket.bind(port);
          } catch (ex) {
              reject(ex);
          }
      }).disposer(function (socket) {
          if (socket._handle) {
              socket.close();
          }
      });
  }