taskworkers can be async or take a callback

This commit is contained in:
Girish Ramakrishnan
2021-08-22 17:08:16 -07:00
parent 3a0e882d33
commit 1052889795
+8 -2
View File
@@ -16,7 +16,8 @@ const apptask = require('./apptask.js'),
safe = require('safetydance'),
settings = require('./settings.js'),
tasks = require('./tasks.js'),
updater = require('./updater.js');
updater = require('./updater.js'),
util = require('util');
const TASKS = { // indexed by task type
app: apptask.run,
@@ -103,7 +104,12 @@ async.series([
};
try {
TASKS[task.type].apply(null, task.args.concat(progressCallback).concat(resultCallback));
if (util.types.isAsyncFunction(TASKS[task.type])) { // can also use fn[Symbol.toStringTag]
const [error, result] = await safe(TASKS[task.type].apply(null, task.args.concat(progressCallback)));
resultCallback(error, result);
} else {
TASKS[task.type].apply(null, task.args.concat(progressCallback).concat(resultCallback));
}
} catch (error) {
debug('Uncaught exception in task', error);
process.exit(1); // do not call setCompleted() intentionally. the task code must be resilient enough to handle it