code: func (c *ShardedClient) Version() VersionResponse {
  	shardConns := c.manager.GetAllShards()
  
  	var err error
  	versions := make(map[int]string)
  	for shard, conn := range shardConns {
  		response := c.versionHelper(shard, conn)
  		if response.Error() != nil {
  			if err == nil {
  				err = response.Error()
  			} else {
  				err = errors.Wrap(response.Error(), err.Error())
  			}
  			continue
  		}
  
  		for shardId, versionString := range response.Versions() {
  			versions[shardId] = versionString
  		}
  	}
  
  	if err != nil {
  		return NewVersionErrorResponse(err, versions)
  	}
  
  	return NewVersionResponse(StatusNoError, versions)
  }
docs: // See Client interface for documentation.