code: func (s *Server) Listen() (net.Listener, error) {
  	if s.Server == nil {
  		return nil, fmt.Errorf("Server field is nil")
  	}
  
  	ln, err := net.Listen("tcp", s.Server.Addr)
  	if err != nil {
  		var succeeded bool
  		if runtime.GOOS == "windows" {
  			// Windows has been known to keep sockets open even after closing the listeners.
  			// Tests reveal this error case easily because they call Start() then Stop()
  			// in succession. TODO: Better way to handle this? And why limit this to Windows?
  			for i := 0; i < 20; i++ {
  				time.Sleep(100 * time.Millisecond)
  				ln, err = net.Listen("tcp", s.Server.Addr)
  				if err == nil {
  					succeeded = true
  					break
  				}
  			}
  		}
  		if !succeeded {
  			return nil, err
  		}
  	}
  
  	// Very important to return a concrete caddy.Listener
  	// implementation for graceful restarts.
  	return ln.(*net.TCPListener), nil
  }
docs: // Listen creates an active listener for s that can be
  // used to serve requests.