Readable stream is an abstraction for some data source. Which is hard to grasp and even harder to use...
Everybody knows that for a readable stream there are two modes of operating: flowing and paused. It's not that easy to understand the implications though.
I usually like to think about a program I'm developing in terms of processes. Even though in Node everything is happening in a single thread, we might usually pick out independent logical processes our program consists of.
Let's try to think about some reading procedure (eg. reading a big file from disk). What would be the ways to organize it?