A concurrency limiter. Limits the number of concurrent invocations possible, without using a worker pool or different processes.
+ It can be useful in cases where you don't need a worker pool but still being able to limit concurrent calls without much overhead. As it internally uses `persistent_term` to store metadata, and can fallback to ETS tables, it is however not made for a large number of limiters and cannot be used for things like a per-user rate limiter.
+
It supports two storage methods:
* **[atomics](https://erlang.org/doc/man/atomics.html)** recommended and default if your OTP is > 21.2.
- * **[ets](https://erlang.org/doc/man/ets.html)** either with a single table per Limiter (faster) or a shared table.
+ * **[ets](https://erlang.org/doc/man/ets.html)** either with a single table per limiter (faster) or a shared table.
- You would however always want to use atomics, ets is mostly there for backwards compatibility.
+ You would almost always want to use atomics, ets is mostly there for backwards compatibility.