Я предполагаю, что здесь ваш бэкэнд - это node.js, который рассматривается как использование вами метеора, вы уже используете NPM, поэтому бэкэнд, использующий Node, имеет смысл.
В этом случае, скажем, вы используете Expressили KOA для обработки ваших запросов, вы можете просто связать свои задачи с помощью обещаний, это заставит задачи выполняться линейно.
Ниже приведен простой рабочий пример, если вы запустите фрагмент, вы заметите, что я добавляюзадачи каждые 700 мс, но задачи могут быть выполнены только за 1000 мс, но, как вы видите, перекрытия нет, и задачи выполняются по порядку.
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
let lastTask = Promise.resolve();
async function addTask(txt) {
const ptask = lastTask;
lastTask = (async () => {
await ptask;
console.log(`starting task ${txt}`);
await delay(1000);
console.log(`done task ${txt}`);
})();
}
async function test() {
for (let l = 0; l < 5; l += 1) {
setTimeout(() => {
console.log(`adding task ${l}`);
addTask(l);
}, l * 700);
}
}
test();