public static Task WaitAsync(this SemaphoreSlim slim, CancellationToken cancellationToken) { return Task.Factory.StartNew(() => slim.Wait(cancellationToken), cancellationToken); } }