code: func (c *Client) Client() (ClientProtocol, error) {
  	_, err := c.Start()
  	if err != nil {
  		return nil, err
  	}
  
  	c.l.Lock()
  	defer c.l.Unlock()
  
  	if c.client != nil {
  		return c.client, nil
  	}
  
  	switch c.protocol {
  	case ProtocolNetRPC:
  		c.client, err = newRPCClient(c)
  
  	case ProtocolGRPC:
  		c.client, err = newGRPCClient(c.doneCtx, c)
  
  	default:
  		return nil, fmt.Errorf("unknown server protocol: %s", c.protocol)
  	}
  
  	if err != nil {
  		c.client = nil
  		return nil, err
  	}
  
  	return c.client, nil
  }
docs: // Client returns the protocol client for this connection.
  //
  // Subsequent calls to this will return the same client.