implements exponential backoff on restarts