for await item in source requires a known next() -> Future<T?> or Task<T?> method. Every iteration awaits one item; nil ends iteration. The source must additionally implement canonical core::cleanup::Cleanup so completion, break, return, rejection and cancellation release its resources.
Implement the async next method with a precise optional return type and implement Cleanup::close. An ordinary synchronous iterable uses for item in source.