pull-thenable
Version:
Convert a pull-stream into a thenable
24 lines (23 loc) • 616 B
JavaScript
var quicktask = require('quicktask').default;
var schedule = quicktask();
module.exports = function thenable(readable, prev) {
return {
cont: {},
then: function then(resolve, reject) {
var cont = this.cont;
function run() {
readable(null, function(errOrEnd, data) {
if (errOrEnd === true) reject(true);
else if (errOrEnd) reject(errOrEnd);
else {
resolve(data);
if (cont.run) cont.run();
}
});
}
if (prev) prev.run = run;
else schedule(run);
return thenable(readable, cont);
},
};
};