Add comprehensive JSDoc and inline comments documenting the known race
condition in the in-memory fallback path of ThrottlerValkeyStorageService.
The non-atomic read-modify-write in incrementMemory() is intentionally
left without a mutex because:
- It is only the fallback path when Valkey is unavailable
- The primary Valkey path uses atomic INCR and is race-free
- Adding locking to a rarely-used degraded path adds complexity
with minimal benefit
Also adds Logger.warn calls when falling back to in-memory mode
at runtime (Redis command failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>