code: func (l *RaftLayer) Dial(address raft.ServerAddress, timeout time.Duration) (net.Conn, error) {
  	d := &net.Dialer{LocalAddr: l.src, Timeout: timeout}
  	conn, err := d.Dial("tcp", string(address))
  	if err != nil {
  		return nil, err
  	}
  
  	// Check for tls mode
  	if l.tlsFunc(address) && l.tlsWrap != nil {
  		// Switch the connection into TLS mode
  		if _, err := conn.Write([]byte{byte(pool.RPCTLS)}); err != nil {
  			conn.Close()
  			return nil, err
  		}
  
  		// Wrap the connection in a TLS client
  		conn, err = l.tlsWrap(conn)
  		if err != nil {
  			return nil, err
  		}
  	}
  
  	// Write the Raft byte to set the mode
  	_, err = conn.Write([]byte{byte(pool.RPCRaft)})
  	if err != nil {
  		conn.Close()
  		return nil, err
  	}
  	return conn, err
  }
docs: // Dial is used to create a new outgoing connection