Reading streams via Async/Await in node pre Node.js 10
by: Peter Shoukry
Node.js 10 introduced experimental support for asyncornously iterating over readable streams. If you are working with Node.js 10 then please read more about it [here](http://2ality.com/2018/04/async-iter-nodejs.html).
If however you are using an earlier version handling streams with async/await can be a bit tricky.
One of the nice solutions is to block execution via a promise that resolves on the completion of the stream read. A quick demo of the technique is as follows:
```javascript
let recordsStream = myReadStream()
/** block execution until we process the stream */
let records = await new Promise(function(resolve, reject) {
let records = []
recordsStream.on(‘data’, function (record) {
// Process one record from the stream
records.push(record)
})
.on(‘end’, function() {
// Resolve the promise to continue execution when the
// stream finishes.
resolve(records)
})
})
/** process all the records in the stream */
```