насчет pipe написано, он слушает события, отправляет данные, добавляе его по частям, это на практике можно увидить как то?
Если не понимаешь что такое pipe и хочешь понять, то ты можешь вручную обрабатывать поток данный. Через readable.on(data) и writable.write (или push, не помню точно). Но помимо короткой записи pipe так же решает такую проблему как разная скорость приёма и передачи клиента и сервера, поэтому без pipe тоже придётся самому это решать