/// <summary> /// Decorator query handler delaying after the <see cref="IProjection"/> has been rebuilt /// <para> /// * redirect exceptions to <see cref="IErrorLog"/> /// </para> /// </summary> /// <param name="query">Typed query</param> /// <returns>Task representing the result of asynchronous query processing </returns> protected override async Task <TResult> Handle(TQuery query) { var tracked = new TrackedResult <TQuery, TResult>(query); await _queryFlow.SendAsync(tracked); return(await tracked.Task); }
/// <inheritdoc /> public async Task <Task <string> > SubmitRequest(string url, CancellationToken token = default) { var tracked = new TrackedResult <string, string>(url, token); try { await _flow.SendAsync(tracked); } catch (Exception e) { _log.Errors.Add(e); _flow = new ConnectorFlow(Configuration.DataflowOptions, this); await _flow.SendAsync(tracked); } return(tracked.Task); }