uapte
This commit is contained in:
66
node_modules/orchestrator/lib/runTask.js
generated
vendored
66
node_modules/orchestrator/lib/runTask.js
generated
vendored
@@ -1,66 +0,0 @@
|
||||
/*jshint node:true */
|
||||
|
||||
"use strict";
|
||||
|
||||
var eos = require('end-of-stream');
|
||||
var consume = require('stream-consume');
|
||||
|
||||
module.exports = function (task, done) {
|
||||
var that = this, finish, cb, isDone = false, start, r;
|
||||
|
||||
finish = function (err, runMethod) {
|
||||
var hrDuration = process.hrtime(start);
|
||||
|
||||
if (isDone && !err) {
|
||||
err = new Error('task completion callback called too many times');
|
||||
}
|
||||
isDone = true;
|
||||
|
||||
var duration = hrDuration[0] + (hrDuration[1] / 1e9); // seconds
|
||||
|
||||
done.call(that, err, {
|
||||
duration: duration, // seconds
|
||||
hrDuration: hrDuration, // [seconds,nanoseconds]
|
||||
runMethod: runMethod
|
||||
});
|
||||
};
|
||||
|
||||
cb = function (err) {
|
||||
finish(err, 'callback');
|
||||
};
|
||||
|
||||
try {
|
||||
start = process.hrtime();
|
||||
r = task(cb);
|
||||
} catch (err) {
|
||||
return finish(err, 'catch');
|
||||
}
|
||||
|
||||
if (r && typeof r.then === 'function') {
|
||||
// wait for promise to resolve
|
||||
// FRAGILE: ASSUME: Promises/A+, see http://promises-aplus.github.io/promises-spec/
|
||||
r.then(function () {
|
||||
finish(null, 'promise');
|
||||
}, function(err) {
|
||||
finish(err, 'promise');
|
||||
});
|
||||
|
||||
} else if (r && typeof r.pipe === 'function') {
|
||||
// wait for stream to end
|
||||
|
||||
eos(r, { error: true, readable: r.readable, writable: r.writable && !r.readable }, function(err){
|
||||
finish(err, 'stream');
|
||||
});
|
||||
|
||||
// Ensure that the stream completes
|
||||
consume(r);
|
||||
|
||||
} else if (task.length === 0) {
|
||||
// synchronous, function took in args.length parameters, and the callback was extra
|
||||
finish(null, 'sync');
|
||||
|
||||
//} else {
|
||||
// FRAGILE: ASSUME: callback
|
||||
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user