public async Task WaitAsync() { Task task; lock (_semaphore) { if (_semaphore.CurrentCount == 0) { _gateway.Log(LogSeverity.Information, "Delaying identifying..."); } task = _semaphore.WaitAsync(); } await task.ConfigureAwait(false); _ = ReleaseAsync(); }