code: func (c *Client) sendCmd(cmd interface{}) chan *response {
  	// Get the method associated with the command.
  	method, err := btcjson.CmdMethod(cmd)
  	if err != nil {
  		return newFutureError(err)
  	}
  
  	// Marshal the command.
  	id := c.NextID()
  	marshalledJSON, err := btcjson.MarshalCmd(id, cmd)
  	if err != nil {
  		return newFutureError(err)
  	}
  
  	// Generate the request and send it along with a channel to respond on.
  	responseChan := make(chan *response, 1)
  	jReq := &jsonRequest{
  		id:             id,
  		method:         method,
  		cmd:            cmd,
  		marshalledJSON: marshalledJSON,
  		responseChan:   responseChan,
  	}
  	c.sendRequest(jReq)
  
  	return responseChan
  }
docs: // sendCmd sends the passed command to the associated server and returns a
  // response channel on which the reply will be delivered at some point in the
  // future.  It handles both websocket and HTTP POST mode depending on the
  // configuration of the client.