public Task<bool> ExecuteAsync(ITaskCoverageManager taskCoverageManager, IVsSolutionTestCoverage vsSolutionTestCoverage, IDocumentProvider documentProvider) { string methodName = Method.Identifier.ValueText; RaiseTaskStartedEvent(taskCoverageManager); var documentSyntaxTree = documentProvider.GetSyntaxNodeFromTextSnapshot(TextBuffer.CurrentSnapshot); var methodNode = documentSyntaxTree.DescendantNodes() .OfType<MethodDeclarationSyntax>() .FirstOrDefault(x => x.Identifier.ValueText == methodName); if (methodNode == null) return Task.FromResult(false); Task<bool> task = vsSolutionTestCoverage.CalculateForSelectedMethodAsync(ProjectName, methodNode); var finalTask = task.ContinueWith((x, y) => { if(!x.Result) taskCoverageManager.ReportTaskToRetry(this); RaiseTasCompletedEvent(taskCoverageManager); return x.Result; }, null, TaskSchedulerManager.Current.FromSynchronizationContext()); return finalTask; }