func (t *Transport) Dial(addr net.Addr) *Conn {
	id := chooseChainID()
	t.stat.addDC(id, addr)
	dc := newDialConn(t.frame.Refine(addr.String()), id, addr,
		func() (net.Conn, error) {
			return t.carrier.Dial(addr)
		},
		func() {
			t.stat.scrubDC(id)
		},
	)
	return &dc.Conn
}
// Dial creates a new chain connection to addr.
// Dial returns instanteneously (it does not wait on I/O operations) and always succeeds, returning a non-nil connection object.
Dial creates a new chain connection to addr.
Dial returns instanteneously (it does not wait on I/O operations) and always succeeds, returning a non-nil connection object.
// Dial creates a new chain connection to addr . // Dial returns instanteneously ( it does not wait on I / O operations ) and always succeeds returning a non - nil connection object .
func (t *Transport) Dial(addr net.Addr) *Conn {
	id := chooseChainID()
	t.stat.addDC(id, addr)
	dc := newDialConn(t.frame.Refine(addr.String()), id, addr,
		func() (net.Conn, error) {
			return t.carrier.Dial(addr)
		},
		func() {
			t.stat.scrubDC(id)
		},
	)
	return &dc.Conn
}
func ( t * Transport ) Dial ( addr net . Addr ) * Conn { id := chooseChainID ( ) t . stat . addDC ( id , addr ) dc := newDialConn ( t . frame . Refine ( addr . String ( ) ) , id , addr , func ( ) ( net . Conn , error ) { return t . carrier . Dial ( addr ) } , func ( ) { t . stat . scrubDC ( id ) } , ) return & dc . Conn }
Dial creates a new chain connection to addr.
Dial creates a new chain connection to addr .