code: func (l *lazyClientConn) doWriteHandshakeWithData(extra []byte) int {
  	buf := bufio.NewWriter(l.con)
  	for _, proto := range l.protos {
  		l.werr = delimWrite(buf, []byte(proto))
  		if l.werr != nil {
  			return 0
  		}
  	}
  
  	n := 0
  	if len(extra) > 0 {
  		n, l.werr = buf.Write(extra)
  		if l.werr != nil {
  			return n
  		}
  	}
  	l.werr = buf.Flush()
  	return n
  }
docs: // Perform the write handshake but *also* write some extra data.