code: func (r *RemoteService) Call(ctx context.Context, req *protos.Request) (*protos.Response, error) {
  	c, err := util.GetContextFromRequest(req, r.server.ID)
  	var res *protos.Response
  	if err != nil {
  		res = &protos.Response{
  			Error: &protos.Error{
  				Code: e.ErrInternalCode,
  				Msg:  err.Error(),
  			},
  		}
  	} else {
  		res = processRemoteMessage(c, req, r)
  	}
  
  	if res.Error != nil {
  		err = errors.New(res.Error.Msg)
  	}
  
  	defer tracing.FinishSpan(c, err)
  	return res, nil
  }
docs: // Call processes a remote call