code: func (d proxyDial) Dial(network string, addr string, config *ssh.ClientConfig) (*ssh.Client, error) {
  	// Build a proxy connection first.
  	pconn, err := dialProxy(context.Background(), d.proxyHost, addr)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	if config.Timeout > 0 {
  		pconn.SetReadDeadline(time.Now().Add(config.Timeout))
  	}
  	// Do the same as ssh.Dial but pass in proxy connection.
  	c, chans, reqs, err := ssh.NewClientConn(pconn, addr, config)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	if config.Timeout > 0 {
  		pconn.SetReadDeadline(time.Time{})
  	}
  	return ssh.NewClient(c, chans, reqs), nil
  }
docs: // Dial first connects to a proxy, then uses the connection to establish a new
  // SSH connection.