namespace Microsoft.Rest.ClientRuntime { using System; using System.Threading.Tasks; public class Response : EventData { public Response() : base() { } } public class Response : Response { private Func> _resultDelegate; private Task _resultValue; public Response(T value) : base() => _resultValue = Task.FromResult(value); public Response(Func value) : base() => _resultDelegate = () => Task.FromResult(value()); public Response(Func> value) : base() => _resultDelegate = value; public Task Result => _resultValue ?? (_resultValue = this._resultDelegate()); } }