// This will be async because the reader has a task in it. public static async Task Consumer(IRead <string> reader) { while (!reader.IsComplete()) { var msg = await reader.Read(); Print(msg); } }