Вы не утилизируете ответ, а это означает, что он висит на соединении из предыдущих запросов.Затем новый запрос ожидает получения этого соединения из пула и блокирует его, поскольку старый ответ по-прежнему «владеет» соединением. Просто измените свой код на:
// You weren't really using the HttpWebResponse class anyway, so why cast?
using (var response = request.GetResponse())
{
}
Неужели вы действительно хочешь рекурсировать хоть?Почему вы не зацикливаетесь, используя:
while(true)
{
GetResponse();
}
или что-то подобное?