on-stream-close
Version:
Callback when a stream has closed
35 lines (25 loc) • 582 B
JavaScript
const { fromCallback } = require('catering')
function osc (stream, callback) {
let error
stream.on('error', onerror)
stream.on('close', onclose)
return detach
function onerror (err) {
error = err
}
function onclose () {
detach()
callback(error)
}
function detach () {
stream.removeListener('error', onerror)
stream.removeListener('close', onclose)
}
}
osc.promises = function (stream) {
const callback = fromCallback()
callback.promise.detach = osc(stream, callback)
return callback.promise
}
module.exports = osc