https://medium.com/@adamszpilewicz/building-resilient-retry-logic-in-rust-timeouts-backoffs-and-best-practices-4d5a61c42348