code: func (t *TcpTransport) Dial(ctx context.Context, raddr ma.Multiaddr, p peer.ID) (tpt.Conn, error) {
  	conn, err := t.maDial(ctx, raddr)
  	if err != nil {
  		return nil, err
  	}
  	// Set linger to 0 so we never get stuck in the TIME-WAIT state. When
  	// linger is 0, connections are _reset_ instead of closed with a FIN.
  	// This means we can immediately reuse the 5-tuple and reconnect.
  	tryLinger(conn, 0)
  	return t.Upgrader.UpgradeOutbound(ctx, t, conn, p)
  }
docs: // Dial dials the peer at the remote address.