code: func NewGRPCService(endpoint string, callTimeout time.Duration) (Service, error) {
  	klog.V(4).Infof("Configure KMS provider with endpoint: %s", endpoint)
  
  	addr, err := parseEndpoint(endpoint)
  	if err != nil {
  		return nil, err
  	}
  
  	connection, err := grpc.Dial(addr, grpc.WithInsecure(), grpc.WithDefaultCallOptions(grpc.FailFast(false)), grpc.WithDialer(
  		func(string, time.Duration) (net.Conn, error) {
  			// Ignoring addr and timeout arguments:
  			// addr - comes from the closure
  			// timeout - is ignored since we are connecting in a non-blocking configuration
  			c, err := net.DialTimeout(unixProtocol, addr, 0)
  			if err != nil {
  				klog.Errorf("failed to create connection to unix socket: %s, error: %v", addr, err)
  			}
  			return c, err
  		}))
  
  	if err != nil {
  		return nil, fmt.Errorf("failed to create connection to %s, error: %v", endpoint, err)
  	}
  
  	kmsClient := kmsapi.NewKeyManagementServiceClient(connection)
  	return &gRPCService{
  		kmsClient:   kmsClient,
  		connection:  connection,
  		callTimeout: callTimeout,
  	}, nil
  }
docs: // NewGRPCService returns an envelope.Service which use gRPC to communicate the remote KMS provider.