How to create a readable stream with an async data source in NodeJs?
Be aware of the different modes of Stream: https://nodejs.org/api/stream.html#stream_two_modes
const Readable = require('stream').Readable;// starts in paused modeconst readable = new Readable();let i = 0;fetchMyAsyncData() { setTimeout(() => { // still remains in paused mode readable.push(++i); if (i === 5) { return readable.emit('end'); } fetchMyAsyncData(); }, 500); }// "The res object is an enhanced version of Node’s own response object and supports all built-in fields and methods."app.get('/mystreamingresponse', (req, res) => { // remains in paused mode readable.on('readable', () => res.write(readable.read())); fetchMyAsyncData(); // closes the response stream once all external data arrived readable.on('end', () => res.end());})