// server/budget-mutex.js — In-memory mutex for budget-modifying operations // Prevents race conditions when multiple requests check availability simultaneously let _lock = null; async function acquireBudgetLock() { while (_lock) await _lock; let resolve; _lock = new Promise(r => { resolve = r; }); return () => { _lock = null; resolve(); }; } module.exports = { acquireBudgetLock };