using System.Diagnostics;
using System.Threading.Tasks;
public static void Main(string[] args)
Stopwatch stopwatch = new Stopwatch();
timeoutPolicy().GetAwaiter().GetResult();
Console.WriteLine(e.Message);
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
static async Task timeoutPolicy()
var timeoutPolicy = Policy.TimeoutAsync<HttpResponseMessage>(1, TimeoutStrategy.Optimistic);
HttpResponseMessage response = await timeoutPolicy.ExecuteAsync((ct) => LongOperation(ct), CancellationToken.None);
Console.WriteLine(response.StatusCode);
static async Task<HttpResponseMessage> LongOperation(CancellationToken token)
await Task.Delay(5000, token);
return new HttpResponseMessage()
StatusCode = HttpStatusCode.BadRequest