code: func HTTPPost(url string, headers [][]string, payload *[]byte) ([]byte, error) {
  	// setup post client
  	client := &http.Client{}
  	req, err := http.NewRequest("POST", url, bytes.NewReader(*payload))
  
  	// add headers
  	if len(headers) > 0 {
  		for i := range headers {
  			req.Header.Add(headers[i][0], headers[i][1])
  		}
  	}
  
  	// perform request
  	resp, err := client.Do(req)
  	if err != nil {
  		return nil, err
  	}
  
  	defer resp.Body.Close()
  
  	if err != nil {
  		return nil, err
  	}
  
  	// read response, check & return
  	body, err := ioutil.ReadAll(resp.Body)
  	if err != nil {
  		return nil, err
  	}
  
  	return body, nil
  }
docs: /*
   * Performs a HTTP Post request. Takes:
   * * A url
   * * Headers, in the format [][]string{} (e.g., [[key, val], [key, val], ...])
   * * A payload (post request body) which can be nil
   * * Returns the body of the response and an error if necessary
   */