I'd like to see static taken off of the Procedure class, but the static methods can remain (backwards compatability and convenience). Then you can instantiate a Procedure object and do some customization on it, like so:
var proc = new Procedure(() => { ... });
proc.Retries = 5;
proc.Timeout = TimeSpan.FromSeconds(30);
proc.Execute();