public async Task <TResult> ExecuteUnsafe <TResult>(RunContext runContext, CancellationToken cancellationToken) { TestOperationStatus.AssertNotStarted(this.Status); var nestedRunContext = this.sourceContext != null ? runContext.MakeNested(this.sourceContext.Value) : runContext; this.Status = new TestOperationStatus.Waiting(this.Status, runContext.MakeWaitContext()); try { var result = await this.ExecuteInner(nestedRunContext, cancellationToken); this.Status = new TestOperationStatus.Completed(this.Status); return((TResult)(object)result); // See the Execute extension method for why this is safe. } catch (OperationCanceledException) { this.Status = new TestOperationStatus.Canceled(this.Status); throw; } catch (Exception e) { this.Status = new TestOperationStatus.Failed(this.Status, e, nestedRunContext.SourceContext); throw; } }