Implemented new requirements which are documented in PR (#363)  for better retry behavior (#299)

- Delay longer after each retry. The delay is calculated with "initial delay sec * 2^retry count". Delay increase like 60 sec, 120, 240, 480,....
- Add MAX_RETRIES for outer retry loop with 10 times. 10's retry delay is around 8hours.

Note: Reseting outer retry count is tricky. Following is reseting rule
- Track which request cause error by extending setError() method.
- Reset retry counter if same request is completed without error.
- Or reset retry counter if error occurs at different request.