code: func (c *Client) doRequest(payload interface{}, responseData interface{}) error {
  	body, err := json.Marshal(payload)
  	if err != nil {
  		return err
  	}
  
  	req, err := http.NewRequest(http.MethodPost, c.BaseURL, bytes.NewReader(body))
  	if err != nil {
  		return err
  	}
  
  	req.Close = true
  	req.Header.Set("content-type", "application/json")
  
  	resp, err := c.HTTPClient.Do(req)
  	if err != nil {
  		return err
  	}
  
  	if err = checkResponse(resp); err != nil {
  		return err
  	}
  
  	respMsg, err := decodeResponseMsg(resp)
  	if err != nil {
  		return err
  	}
  
  	if respMsg.Status != success {
  		return respMsg
  	}
  
  	if responseData != nil {
  		err = json.Unmarshal(respMsg.ResponseData, responseData)
  		if err != nil {
  			return fmt.Errorf("%v: unmarshaling %T error: %v: %s",
  				respMsg, responseData, err, string(respMsg.ResponseData))
  		}
  	}
  
  	return nil
  }
docs: // doRequest marshals given body to JSON, send the request to netcup API
  // and returns body of response