code: func (k *Kite) listenAndServe() error {
  	// create a new one if there doesn't exist
  	l, err := net.Listen("tcp4", k.Addr())
  	if err != nil {
  		return err
  	}
  
  	k.Log.Info("New listening: %s", l.Addr())
  
  	if k.TLSConfig != nil {
  		if k.TLSConfig.NextProtos == nil {
  			k.TLSConfig.NextProtos = []string{"http/1.1"}
  		}
  		l = tls.NewListener(l, k.TLSConfig)
  	}
  
  	k.listener = newGracefulListener(l)
  
  	// listener is ready, notify waiters.
  	close(k.readyC)
  
  	defer close(k.closeC) // serving is finished, notify waiters.
  	k.Log.Info("Serving...")
  
  	return k.serve(k.listener, k)
  }
docs: // listenAndServe listens on the TCP network address k.URL.Host and then
  // calls Serve to handle requests on incoming connectionk.