code: func (c *RPCClient) Close() error {
  	c.shutdownLock.Lock()
  	defer c.shutdownLock.Unlock()
  
  	if !c.shutdown {
  		c.shutdown = true
  		close(c.shutdownCh)
  		c.deregisterAll()
  		return c.conn.Close()
  	}
  	return nil
  }
docs: // Close is used to free any resources associated with the client