Merge upstream

This merges upstream changes from sneakers/master onto our fork of that. This is primarily so I can more easily create a pull requests against the upstream repository to commit the Maxretry plugin.