public override async Task <Unit> Handle(GetRateAction aGetRateAction, CancellationToken aCancellationToken) { var conversionRequest = new ConversionRequest() { FromCurrency = aGetRateAction.FromCurrency, ToCurrency = aGetRateAction.ToCurrency }; string uri = $"{ConversionRequest.Route}?{conversionRequest.ToQueryString()}"; ConversionResponse conversionResponse = await HttpClient.GetJsonAsync <ConversionResponse>(uri); Conversion?conversion = RateState.Conversions.FirstOrDefault ( aConversion => aConversion.FromCurrency == aGetRateAction.FromCurrency && aConversion.ToCurrency == aGetRateAction.ToCurrency ); RateState._Conversions.Remove(conversion); RateState._Conversions.Add(new Conversion( conversionRequest.FromCurrency, conversionRequest.ToCurrency, conversionResponse.Rate)); return(Unit.Value); }