Yes. VOID now has one structural await mechanism based on GetAwaiter(), IsCompleted, OnCompleted(Action), and GetResult(). Task participates through TaskAwaiter rather than a private compiler-only await path, and the same binder works with custom class, struct, generic, and extension awaiters.
Task.Yield() provides an allocation-free yield awaitable, while ValueTask/ValueTask<T> provide true value-type completed paths plus Task-backed asynchronous paths. async ValueTask methods reuse the existing state-machine and completion machinery.
The order was deliberate. VOID first built threads, synchronization, cancellation, ThreadPool scheduling, Task completion, exceptions, GC coordination, continuations, and Task-backed state machines. Generalizing the await contract after those pieces existed removed the Task special case without creating a second scheduler or async runtime.
That same mechanism now powers async lambdas and structured await using, while Task completion factories, async Task.Run unwrapping, WhenAll, and WhenAny compose work through continuations instead of adding another async execution model.