https://sd.blackball.lv/en/articles/read/19170-how-to-implement-effective-retry-logic-in-csharp?tag=retrypattern