Fix-forward к смерженному PR #2716. Прод-проверка того PR показала, что признак
распознаётся (в логе появилась новая ветка), но сам повтор не помогает:
10:03:49 WARNING страница ушла в навигацию (Error), retry fetch-json с ожиданием load
10:03:54 ERROR Page.evaluate: Execution context was destroyed
Воспроизведено вживую дважды (безобидный robots.txt, origin = корень и город) —
обе попытки падают одинаково, при этом `/fetch` того же URL отдаёт 200 и настоящий
robots.txt, то есть площадка не блокирует и прокси жив.
Причина: навигация origin-страницы происходит ПОСЛЕ события load, поэтому ни
settle, ни ожидание load её не опережают, а повтор на СВЕЖЕЙ странице честно
воспроизводит ту же первую навигацию.
Правка:
1. Повтор evaluate на ТОЙ ЖЕ странице: к моменту исключения навигация уже
случилась, у страницы новый и уже стабильный контекст. Стоит миллисекунды
против полной ре-навигации.
2. Внешний повтор на свежей странице УБРАН — прод показал, что он не может
выиграть, а стоил полной ре-навигации. Страховкой остаётся один повтор всего
запроса на стороне клиента (BrowserFetcher.fetch_json), который был и раньше.
3. JS in-page fetch вынесен в константу (нужен двум вызовам), ожидание load — в
_wait_for_load_best_effort.
Refs #2676