code: func ServiceVersion(c context.Context, s signing.Signer) (string, error) {
  	inf, err := s.ServiceInfo(c) // cached
  	if err != nil {
  		return "", err
  	}
  	return fmt.Sprintf("%s/%s", inf.AppID, inf.AppVersion), nil
  }
docs: // ServiceVersion returns a string that identifies the app and the version.
  //
  // It is put in some server responses. The function extracts this information
  // from the given signer.
  //
  // This function almost never returns errors. It can return an error only when
  // called for the first time during the process lifetime. It gets cached after
  // first successful return.