Distributed locking & rate limiting

In one of my previous projects, I ran into two problems. And this is not cache invalidation and naming things as you might think :). This is distributed locking and distributed rate limiting. In my opinion, I did a pretty good job solving these two. And now after some simplifying and reshaping I think the solutions are ready for publishing and here they are: go-locker & go-counter on Go and js-locker & js-counter on TypeScript. Comments are welcome.