выполнятся до получения результатов как 5 секунд, так и до 5 минут
Я так понимаю, headless браузер запускается в одном экземпляре и все запросы идут в него? Тогда у вас просто внутри него возникают взаимные блокировки. Я когда сталкивался с подобной проблемой с ходу не смог это решить в рамках одного запущенного процесса поэтому поступил проще. В своем парсере делайте менеджер коннектов в задачи которого входит:
1) запуск дополнительных копий браузера в случае надобности;
2) гарантия, что в одну копию уходит только один запрос и пока ответ не получен, новое задание (в рамках одного домена) не может быть отправлено.
Так же замечу, что PhantomJS ветки 2 работает медленее, чем 1.9. Там, где старая версия отрабатывала за полсекунды новая думает секунду-полторы.