code: func (r *Request) BodyData() []byte {
  	var err error
  	if !r.bodyRead {
  		if r.Body != nil {
  			r.bodyData, err = ioutil.ReadAll(r.Body)
  			if err != nil {
  				// catch i/o timeout errors
  				neterr, isNetError := err.(net.Error)
  				if isNetError && neterr.Timeout() {
  					panic(ghttp.NewHttpError(err, http.StatusRequestTimeout))
  				} else {
  					panic(err)
  				}
  			}
  		}
  		r.bodyRead = true
  	}
  
  	return r.bodyData
  }
docs: // BodyData returns the full request body