code: func (cl *Client) outgoingConnection(t *Torrent, addr IpPort, ps peerSource) {
  	cl.dialRateLimiter.Wait(context.Background())
  	c, err := cl.establishOutgoingConn(t, addr)
  	cl.lock()
  	defer cl.unlock()
  	// Don't release lock between here and addConnection, unless it's for
  	// failure.
  	cl.noLongerHalfOpen(t, addr.String())
  	if err != nil {
  		if cl.config.Debug {
  			cl.logger.Printf("error establishing outgoing connection: %s", err)
  		}
  		return
  	}
  	if c == nil {
  		return
  	}
  	defer c.Close()
  	c.Discovery = ps
  	cl.runHandshookConn(c, t)
  }
docs: // Called to dial out and run a connection. The addr we're given is already
  // considered half-open.