# minipass-flush A Minipass stream that calls a flush function before emitting 'end' ## USAGE ```js const Flush = require('minipass-flush') cons f = new Flush({ flush (cb) { // call the cb when done, or return a promise // the 'end' event will wait for it, along with // close, finish, and prefinish. // call the cb with an error, or return a rejecting // promise to emit 'error' instead of doing the 'end' return rerouteAllEncryptions().then(() => clearAllChannels()) }, // all other minipass options accepted as well }) someDataSource.pipe(f).on('end', () => { // proper flushing has been accomplished }) // Or as a subclass implementing a 'flush' method: class MyFlush extends Flush { flush (cb) { // old fashioned callback style! rerouteAllEncryptions(er => { if (er) return cb(er) clearAllChannels(er => { if (er) cb(er) cb() }) }) } } ``` That's about it. If your `flush` method doesn't have to do anything asynchronous, then it's better to call the callback right away in this tick, rather than returning `Promise.resolve()`, so that the `end` event can happen as soon as possible.