/// <summary>
 /// Выполнить функцию для сервиса, проверить на ошибки и выполнить повторное подключение при сбое
 /// </summary>
 public async Task <IResultValue <TResult> > UsingServiceRetry <TResult>(Expression <Func <TService, Task <TResult> > > serviceExpression,
                                                                         RetryService retryService) =>
 await UsingServiceDefault(serviceExpression).
 ResultVoidBadBindAsync(_ => Task.Delay(RetryService.RetryDelayMilliseconds)).
 ResultValueBadBindAsync(errors => retryService.IsRetryLast()
                                       ? Task.FromResult((IResultValue <TResult>) new ResultValue <TResult>(errors))
                                       : UsingServiceRetry(serviceExpression, retryService.NextRetry()));
 protected WcfServiceFactory(Func <TService> getService, RetryService retryService)
 {
     _getService   = getService ?? throw new ArgumentNullException(nameof(getService));
     _retryService = retryService ?? throw new ArgumentNullException(nameof(retryService));
 }