This is a thin HTTP layer abstraction used by the client
- HTTP headers. All keys are converted to lowercase on the fly.
- A callable class which converts requests to responses
- The request which is sent by the client and received by the server
- The response sent by the server and received by the client
- A wrapper over HttpHandler which allows logging