LesbianDB-style lightweight async semaphores are an excellent alternative to SemaphoreSlim because they are fully managed, fully async, and unlike SemaphoreSlim, they don't need to be disposed of.
https://github.com/jessiepathfinder/LesbianDB-v2.1/blob/master/LesbianDB/AsyncManagedSemaphore.cs