instead of forcing plaintext, handle binary (gzipped) responses correctly using buffers
split out request body collection into a separate module