using System.Net.Http; using System.Threading; using System.Threading.Tasks; namespace ComposableAsync { /// /// A implementation based on /// internal class DispatcherDelegatingHandler : DelegatingHandler { private readonly IDispatcher _Dispatcher; /// /// Build an from a /// /// public DispatcherDelegatingHandler(IDispatcher dispatcher) { _Dispatcher = dispatcher; InnerHandler = new HttpClientHandler(); } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { return _Dispatcher.Enqueue(() => base.SendAsync(request, cancellationToken), cancellationToken); } } }