code: func (t *handshakeTransport) sendKexInit() (*kexInitMsg, []byte, error) {
  	t.mu.Lock()
  	defer t.mu.Unlock()
  	return t.sendKexInitLocked()
  }
docs: // sendKexInit sends a key change message, and returns the message
  // that was sent. After initiating the key change, all writes will be
  // blocked until the change is done, and a failed key change will
  // close the underlying transport. This function is safe for
  // concurrent use by multiple goroutines.