Seems like the retry count should maybe be an option so that the caller 1) has control over it and 2) is aware of the retry logic's existence.