Во-первых, не используйте произвольные (фиксированные) этапы ожидания, пока это не станет абсолютно необходимым.Вместо этого используйте интеллектуальные этапы ожидания, что означает ожидание чего-либо, а затем выполнение или выдачу исключения, если оно истекло.В вашем случае вы можете использовать интеллектуальную стадию ожидания, например, чтобы проверить, загружен ли веб-сайт.
Когда дело доходит до выдачи исключения,в вашем случае я просто запустил бы, затем дождался загрузки документа и выдал исключение, если оно истекло.См. Диаграмму ниже.
Кроме того, я бы оставил логику повторных попыток (восстановить - возобновить) для уровня процесса.В идеале объект должен содержать небольшие многократно используемые действия и не иметь бизнес-логики, поэтому в процессе следует принимать решения о том, нужно ли и сколько раз повторить попытку.