'use strict'; const Promise = require("bluebird"); const createEventEmitter = require("create-event-emitter"); module.exports = function(total, completionValue) { return createEventEmitter({ await: function awaitCompletion() { return new Promise((resolve, reject) => { this.once("completed", () => { resolve(completionValue); }).once("error", (err) => { reject(err); }); }); }, report: function reportStatus(status, description) { this.emit("progress", status / total, description, status, total); if (status >= total) { this.emit("completed"); } } }); }