func()

in pkg/espoll/request.go [35:67]


func (br *bodyRepeater) Perform(req *http.Request) (*http.Response, error) {
	if req.Body == nil {
		return br.t.Perform(req)
	}
	if br.getBody == nil {
		// First call to Perform: set br.getBody to req.GetBody
		// (if non-nil), or otherwise by replacing req.Body with
		// a TeeReader that reads into a buffer, and setting
		// getBody to a function that returns that buffer on
		// subsequent calls.
		br.getBody = req.GetBody
		if br.getBody == nil {
			// no GetBody, gotta copy it ourselves
			var buf bytes.Buffer
			req.Body = readCloser{
				Reader: io.TeeReader(req.Body, &buf),
				Closer: req.Body,
			}
			br.getBody = func() (io.ReadCloser, error) {
				r := bytes.NewReader(buf.Bytes())
				return io.NopCloser(r), nil
			}
		}
	} else {
		body, err := br.getBody()
		if err != nil {
			return nil, err
		}
		req.Body.Close()
		req.Body = body
	}
	return br.t.Perform(req)
}