Entiendo que ejecutar JavaScript en el nodo es de un solo subproceso (que es donde estoy ejecutando el código a continuación), pero me preocupa que la llamada await func(...) en la llamada a continuación detenga la ejecución mientras obtiene datos, causando el próxima llamada para ingresar a este método y llamar a la func(...) nuevamente.
Si estuviera haciendo esto en C# o Java, usaría un candado para asegurarme de que el subproceso espera antes de continuar. ¿Debería estar haciendo algo similar en JavaScript?
export async function getCacheData( cacheKeyBase: String, func: any, args: any, context: any, timeOut: any = IOREDIS_SLOW_TIME_OUT, ) { const cacheKey = `${cacheKeyBase}-${JSON.stringify(args)}`; const cacheData = REDIS_ENABLED ? await redis.get(cacheKey) : undefined; let retData; if (cacheData) { retData = JSON.parse(cacheData); } else { retData = await func(args, context); await redis.set(cacheKey, JSON.stringify(retData), 'ex', timeOut); } return retData; }