Why setTimeout delay is necessary while pushing data in pipe? (about ”stream-handbook“)

refer: https://github.com/substack/stream-handbook

var Readable = require('stream').Readable;
var rs = Readable();

var c = 97 - 1;

rs._read = function () {
    if (c >= 'z'.charCodeAt(0)) return rs.push(null);

    setTimeout(function () {
        rs.push(String.fromCharCode(++c));
    }, 100);
};

rs.pipe(process.stdout);

process.on('exit', function () {
    console.error('\n_read() called ' + (c - 97) + ' times');
});
process.stdout.on('error', process.exit);

The setTimeout delay is necessary because the operating system requires some time to send us the relevant signals to close the pipe.

What's meaning about "delay is necessary"??

No, its not necessary at all. I think this is because an author wants to illustrate how _read methods works. Anyway that's a good example, in real life you might have a delays. Here is what I found in the book:

To show that our _read function is only being called when the consumer requests, we can modify our readable stream code slightly to add a delay: