Вы не установили ReadTimeout в потоке, и данных нет, поэтому вызов блокируется, пока данные не станут доступны.
Проверьте свойства Stream .ReadTimeout и .WriteTimeout.
Кроме того, имейте в виду, что вы знаете, какие данные вам нужны, а не сколько данных поступят (сбои, ошибки и т. Д.), Поэтому вам следует это проверить.