private async Task <JobResultCode> TryProcessJobAsync(OrderQueueMessage message)
 {
     try
     {
         return(await ProcessJobAsync(message));
     }
     catch (Exception ex)
     {
         LogFailure($"Unhandled exception in ProcessJobAsync - {ex.Message} {ex.InnerException.Message} {ex.StackTrace}");
         return(JobResultCode.PermanentFailure);
     }
 }
 private async Task <JobResultCode> ProcessJobAsync(OrderQueueMessage message)
 {
     try
     {
         _logger.LogInformation($"Processing OrderID: {message.OrderID}");
         // POST order to third party system here
         return(JobResultCode.Success);
     }
     catch (OrderCloudException ex)
     {
         //  Handle and log exception from OrderCloud
         LogFailure($"{ex.InnerException?.Message} {ex?.InnerException?.InnerException?.Message} { JsonConvert.SerializeObject(ex.Errors) } {ex.StackTrace }");
         return(IsTransientError(ex.HttpStatus) ? JobResultCode.TemporaryFailure : JobResultCode.PermanentFailure);
     }
     catch (Exception ex)
     {
         //  Catch all for other exceptions
         LogFailure($"{ex.Message} {ex?.InnerException?.Message} {ex.StackTrace}");
         return(JobResultCode.PermanentFailure);
     }
 }