Я еще не пробовал, но как насчет написания отдельного TCP-сервера для потоковой передачи ответов? Затем перенаправьте запрос от HttpListener на «внутренний» tcp сервер. Используя это перенаправление, вы сможете передавать данные обратно, как вам нужно.
Что касается очистки, то единственный способ, которым я это вижу, - это смоделировать избавление, фактически не уничтожая. Если вы можете взломать объект HttpResponseStream, попросить его удалить, сбросить флаг m_Closed и т. Д., Вы можете очистить потоковые данные.