Каков правильный способ использования async/await в рекурсивном методе? Вот мой метод:
public string ProcessStream(string streamPosition)
{
    var stream = GetStream(streamPosition);
    if (stream.Items.count == 0)
        return stream.NextPosition;
    foreach(var item in stream.Items) {
        ProcessItem(item);
    }
    return ProcessStream(stream.NextPosition)
}
И вот метод с async/wait:
public async Task<string> ProcessStream(stringstreamPosition)
{
        var stream = GetStream(streamPosition);
        if (stream.Items.count == 0)
            return stream.NextPosition;
        foreach(var item in stream.Items) {
            await ProcessItem(item); //ProcessItem() is now an async method
        }
        return await ProcessStream(stream.NextPosition);
 }
