code: func (stub *RawStub) Send(server string, conf common.Config, req *discovery.Request) (ServiceResponse, error) {
  	comm, err := comm.NewClient(conf.TLSConfig)
  	if err != nil {
  		return nil, err
  	}
  	signer, err := signer.NewSigner(conf.SignerConfig)
  	if err != nil {
  		return nil, err
  	}
  	timeout, cancel := context.WithTimeout(context.Background(), defaultTimeout)
  	defer cancel()
  
  	req.Authentication = &AuthInfo{
  		ClientIdentity:    signer.Creator,
  		ClientTlsCertHash: comm.TLSCertHash,
  	}
  
  	payload := utils.MarshalOrPanic(req.Request)
  	sig, err := signer.Sign(payload)
  	if err != nil {
  		return nil, err
  	}
  
  	cc, err := comm.NewDialer(server)()
  	if err != nil {
  		return nil, err
  	}
  	resp, err := NewDiscoveryClient(cc).Discover(timeout, &SignedRequest{
  		Payload:   payload,
  		Signature: sig,
  	})
  
  	if err != nil {
  		return nil, err
  	}
  
  	return &response{
  		raw: resp,
  	}, nil
  }
docs: // Send sends the request, and receives a response