1. С использованием BufferedOutputStream можно было уложиться в пару строчек.(zeroFilter)
2. Входные данные рандомные, выходной результат возможно тоже.( success/failed)
>>Как вообще вывод данных, влияет на запись этих данных
Никак в идеале.
отображайте круг и т.п. ,пока не будет ответа.
Ответ а onfailure or onresponse
Зачем вообще что-то блокировать? Плохая практика.
Можно замутить с событиями (скорее всего),но зачем?