public async Task <TResult> Execute <TCriteria, TResult>(TCriteria criteria) { var query = _queryFactory.Create <TCriteria, TResult>(); try { return(await query.Execute(criteria).ConfigureAwait(false)); } finally { _queryFactory.Destroy(query); } }