MCPcopy Index your code
hub / github.com/deployd/deployd / wrapAsyncFunction

Function wrapAsyncFunction

lib/script.js:268–315  ·  view source on GitHub ↗
(asyncFunction, sandbox, events, done, sandboxRoot)

Source from the content-addressed store, hash-verified

266}
267
268function wrapAsyncFunction(asyncFunction, sandbox, events, done, sandboxRoot) {
269 return function() {
270 if (sandboxRoot._error) return;
271
272 var args = _.toArray(arguments);
273 var callback;
274 var callbackIndex;
275 var result;
276
277 for(var i = 0; i < args.length; i++) {
278 if(typeof args[i] == 'function') {
279 callback = args[i];
280 callbackIndex = i;
281 break;
282 }
283 }
284
285 if (typeof callback === 'function') {
286 events.emit('addCallback');
287 args[callbackIndex] = function() {
288 if (sandboxRoot._error) return;
289 try {
290 result = callback.apply(sandboxRoot._this, arguments);
291 events.emit('finishCallback');
292 } catch (err) {
293 var wrappedErr = wrapError(err);
294 sandbox._error = wrappedErr;
295 return done(wrappedErr);
296 }
297 };
298 }
299 try {
300 result = asyncFunction.apply(sandboxRoot._this, args);
301 } catch(err) {
302 var wrappedErr = wrapError(err);
303 sandbox._error = wrappedErr;
304 return done(wrappedErr);
305 }
306
307 if(result !== undefined) {
308 if(isPromise(result)) {
309 return wrapPromise(result, sandbox, events, done, sandboxRoot);
310 } else {
311 return result;
312 }
313 }
314 };
315}
316
317function wrapAsyncFunctions(asyncFunctions, sandbox, events, done, sandboxRoot) {
318 if (!sandboxRoot) sandboxRoot = sandbox;

Callers 1

wrapAsyncFunctionsFunction · 0.85

Calls 4

wrapErrorFunction · 0.85
isPromiseFunction · 0.85
wrapPromiseFunction · 0.85
doneFunction · 0.70

Tested by

no test coverage detected