ValueTask в C#
Структура ValueTask<T> уменьшает число объектов в памяти, когда результат часто готов сразу.
Один и тот же экземпляр нельзя ожидать второй раз: после await он уже использован.
Вернём уже известное число без отдельного объекта задачи:
static ValueTask<int> ReadCachedAsync() => new ValueTask<int>(5);
Console.WriteLine(await ReadCachedAsync()); // выведет 5
Сделайте метод, который сразу отдаёт строку "cached", и выведите её.