Compatibility updates

Fixes #67 
Fixes #70
This doesn't work because the .NET Framework implementation of this call does not provide the same GC guarantees as this method. In particular, `CancellationTokenSource.CancelAfter` will prevent the `CancellationTokenSource` from getting garbage collected prior to the timer expiring.