private Task <QueryResult> GetQueryResultTaskResult(string query, IndexQuery indexQuery, DateTime startTime) { return(theAsyncDatabaseCommands.QueryAsync(indexName, indexQuery, includes.ToArray()) .ContinueWith(task => { if (theWaitForNonStaleResults && task.Result.IsStale) { var elapsed1 = DateTime.Now - startTime; if (elapsed1 > timeout) { throw new TimeoutException( string.Format("Waited for {0:#,#}ms for the query to return non stale result.", elapsed1.TotalMilliseconds)); } Debug.WriteLine( string.Format( "Stale query results on non stable query '{0}' on index '{1}' in '{2}', query will be retried", query, indexName, theSession.StoreIdentifier)); return TaskEx.Delay(100) .ContinueWith(_ => GetQueryResultTaskResult(query, indexQuery, startTime)) .Unwrap(); } Debug.WriteLine(string.Format("Query returned {0}/{1} results", task.Result.Results.Count, task.Result.TotalResults)); return task; }).Unwrap()); }