Added autoretry decorator

Refs #1608 
looks great ... one I can see is that `context.expires` is being lost