code: func (s *Server) Serve(c net.PacketConn) error {
  	var tempDelay time.Duration
  	for {
  		msg, err := s.readFromConnection(c)
  		if err != nil {
  			if ne, ok := err.(net.Error); ok && ne.Temporary() {
  				if tempDelay == 0 {
  					tempDelay = 5 * time.Millisecond
  				} else {
  					tempDelay *= 2
  				}
  				if max := 1 * time.Second; tempDelay > max {
  					tempDelay = max
  				}
  				time.Sleep(tempDelay)
  				continue
  			}
  			return err
  		}
  		tempDelay = 0
  		go s.Dispatcher.Dispatch(msg)
  	}
  }
docs: // Serve retrieves incoming OSC packets from the given connection and dispatches
  // retrieved OSC packets. If something goes wrong an error is returned.