Added possibility that attemptsLeft can be nil. in this case never block the user.