/** * @see parent * @param Bronto_Api_Exception $exception * @param Bronto_Api $api * @param Bronto_Object $request * @return boolean */ public function recover(Bronto_Api_Exception $exception, Bronto_Api $api, Bronto_Object $request) { $canRetry = $exception->getAttempts() < $api->getOptions()->getRetries(); if ($exception->isRecoverable() && $canRetry) { if ($exception->isInvalidSession()) { $api->login(); return true; } else { if ($exception->isNetworkRelated() && !$request->hasUpdates()) { // Incrementally backoff the read request $backOff = $api->getOptions()->getBackOff() * $exception->getAttempts(); sleep($backOff); return true; } } } return false; }