public async Task <string> Handle(CreateUrlMappingCommand request, CancellationToken cancellationToken) { ValidationResult results = _validator.Validate(request); if (!results.IsValid) { throw new CustomValidationException(results.Errors.First().ErrorMessage); } var attempts = 0; string _out; do { var code = await _codeService.GenerateCodeAsync(); var entity = new UrlMappingEntity( code, Path.Combine(clientEndpoint, code), request.LongUrl, _dateProvider.Now.AddMinutes(intervalMinutes)); try { attempts++; _out = await CreateUrlMapping(entity); break; } catch (Exception ex) { if (attempts == 3) { throw new CreateUrlMappingException("Error: create url mapping service not available", ex); } } } while (true); return(_out); }