throw if max retries attempted