I know you got this from the original code, but it seems a bit silly to have this hardcoded to `10` attempts.  While we're in here, maybe we should add a configuration parameter for the number of attempts, and adjust the exception messages (and the name of this method) accordingly.