code: func (s *realServer) Dial() (*wire.Conn, error) {
  	conn, err := s.config.Dial(s.address)
  	if err != nil {
  		// Attempt to start the server and try again.
  		if err = s.Start(); err != nil {
  			return nil, errors.WrapErrorf(err, errors.ServerNotAvailable, "error starting server for dial")
  		}
  
  		conn, err = s.config.Dial(s.address)
  		if err != nil {
  			return nil, err
  		}
  	}
  	return conn, nil
  }
docs: // Dial tries to connect to the server. If the first attempt fails, tries starting the server before
  // retrying. If the second attempt fails, returns the error.