code: func (c *Client) Call(ctx context.Context, serviceName, methodName string, in, out proto.Message, opts ...grpc.CallOption) error {
  	reqBody, err := proto.Marshal(in)
  	if err != nil {
  		return err
  	}
  
  	resp, err := c.CallRaw(ctx, serviceName, methodName, reqBody, FormatBinary, FormatBinary, opts...)
  	if err != nil {
  		return err
  	}
  	return proto.Unmarshal(resp, out)
  }
docs: // Call makes an RPC.
  // Retries on transient errors according to retry options.
  // Logs HTTP errors.
  //
  // opts must be created by this package.
  // Calling from multiple goroutines concurrently is safe, unless Client is mutated.
  // Called from generated code.
  //
  // If there is a Deadline applied to the Context, it will be forwarded to the
  // server using the HeaderTimeout header.