DotNext.Threading by Roman Sakno

<PackageReference Include="DotNext.Threading" Version="3.2.1" />

 AsyncBridge

public static class AsyncBridge
Allows to turn WaitHandle and CancellationToken into task.
public static ValueTask WaitAsync(this CancellationToken token, bool completeAsCanceled = false)

Obtains a task that can be used to await token cancellation.

public static ValueTask<bool> WaitAsync(this WaitHandle handle, TimeSpan timeout)

Obtains a task that can be used to await handle completion.

public static ValueTask<bool> WaitAsync(this WaitHandle handle)

Obtains a task that can be used to await handle completion.