ensure applyAsyncPromise.stubPromise runs immediately when stub and server is enabled

This commit is contained in:
Nacho Codoñer
2024-01-24 15:27:05 +01:00
parent bfd8fe08ea
commit 8a48f0384a

View File

@@ -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(() => {