I have been doing this design pattern over and over again and decided to make a NuGet package to share with other fellow devs in other projects.
Will eventually write a cool Readme and add more capabilities and scenarios to this. I know a lot more can be done regarding Retry behaviors.