taskworkers can be async or take a callback
This commit is contained in:
+8
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user