public async Task <CalculatorResponse> Handle(CalculatorQuery request, CancellationToken cancellationToken) { var rate = await _retry.ExecuteAsync <decimal?>(_rateService.GetRateMonthlyAsync); if (!rate.HasValue) { return(Error("Rate Service Unabailable")); } var interest = new Interest(request.InitialVale, request.Months, rate.Value); var validation = interest.IsValidForCalculateInterest(); if (validation.IsSuccess) { return(await Task.FromResult(interest.Map())); } return(Error(validation.Message)); }