code: func (k *Kite) GetToken(kite *protocol.Kite) (string, error) {
  	if err := k.SetupKontrolClient(); err != nil {
  		return "", err
  	}
  
  	<-k.kontrol.readyConnected
  
  	result, err := k.kontrol.TellWithTimeout("getToken", k.Config.Timeout, kite)
  	if err != nil {
  		return "", err
  	}
  
  	var tkn string
  	err = result.Unmarshal(&tkn)
  	if err != nil {
  		return "", err
  	}
  
  	return tkn, nil
  }
docs: // GetToken is used to get a token for a single Kite.
  //
  // In case of calling GetToken multiple times, it usually
  // returns the same token until it expires on Kontrol side.