S3 retry

@hemantkr please review 
I haven't tested with talko_service yet, and will do that before merging, but would like to make sure you don't see any issues with this approach.
added test for this, but it was actually handled, as error results don't call this function. This is only used for errors from the service, not errors contacting the service.