вот смотри, стрим это когда инфа летит кусками, когда залетает такой кусочек, звонит событие, ты его ловишь слушателем, потом еще событие и еще, пока не кончатся куски, когда стрим кончился, опять событие "end", так вот он каждый новый кусочек присоединяет к друг другу, потом буфер конвертит в строку, а строку сует в парс. все просто. из-за событий метод и асинхронен. другое дело, тебе это сейчас зачем?)