very simple and stupid event loop to deal with the async calls using go routines and channels refer to the Test file to see how it works
a simple retry logic with exponential backoff strategy
a simple abstraction for http client which will handle HTTP/1.1 request
| response