public async Task DoStuff(IAsyncModel model) { await Task.Factory.StartNew(() => Thread.Sleep(5)); // continuation begins here var result = model.GetData(); if (result != 5) { throw new Exception(); } }