DRYing retry logic

Trying to move the retry logic to a single place. If you guys have a good idea to get rid of mocha I'm all :ear:s 

Also I'm choosing not to rescue Exception, in general I dislike doing so and just rescue StandarError, because Exception is crazy, as in it might trap signals, eat up syntax errors, make life just hard. AFAICT Errno < StandardError, so we should be fine.

@boourns @burke