static AsyncLocal<object> local = new AsyncLocal<object>();
WeakReference data = null;
data = new WeakReference(o);
// We assign to the static async local, to see if it leaks.
// After execution is finished, we do have a live reference still.
System.Diagnostics.Debug.Assert(data.IsAlive == true);
// But a GC proves nobody is holding a strong reference to it.
System.Diagnostics.Debug.Assert(data.IsAlive == false);