Why it matters
using disposes the scope the instant the starting method returns, which for a discarded task is almost always before the work has finished. The background work then resolves from, or calls into, a disposed scope: ObjectDisposedException at best, and at worst a service that quietly operates on torn-down state such as a closed DbContext connection. The failure is timing-dependent, so it passes locally and fails under load.