Building Distributed Sliding-Window Rate Limiters in TypeScript and Redis