diff --git a/packages/ddp-client/client/queueStubsHelpers.js b/packages/ddp-client/client/queueStubsHelpers.js index ee495ef3fc..df54b3351f 100644 --- a/packages/ddp-client/client/queueStubsHelpers.js +++ b/packages/ddp-client/client/queueStubsHelpers.js @@ -62,6 +62,7 @@ export const loadAsyncStubHelpers = () => { Connection.prototype.applyAsync = function () { let args = arguments; let name = args[0]; + let options = args[2]; if (currentMethodInvocation) { DDP._CurrentMethodInvocation._set(currentMethodInvocation); @@ -92,19 +93,13 @@ export const loadAsyncStubHelpers = () => { let finished = false; Meteor._setImmediate(() => { + let { returnStubValue, returnServerResultPromise } = options || {}; + const applyAsyncPromise = oldApplyAsync.apply(this, args); stubPromiseResolver(applyAsyncPromise.stubPromise); serverPromiseResolver(applyAsyncPromise.serverPromise); - applyAsyncPromise.stubPromise - .then((result) => { - finished = true; - resolve(result); - }) - .catch((err) => { - finished = true; - reject(err); - }); - applyAsyncPromise.serverPromise + if (returnStubValue && returnServerResultPromise) { + applyAsyncPromise.stubPromise .then((result) => { finished = true; resolve(result); @@ -113,6 +108,17 @@ export const loadAsyncStubHelpers = () => { finished = true; reject(err); }); + return; + } + applyAsyncPromise + .then((result) => { + finished = true; + resolve(result); + }) + .catch((err) => { + finished = true; + reject(err); + }); }); Meteor._setImmediate(() => {