/**
  * Override of parent::achieveGoal to support auto-retry
  *
  * @param  string  $integration  The integration name of the API Goal
  * @param  string  $call_name    The call name of the API Goal
  * @param  uint    $contact_id   The contact ID of the contact on which to execute
  * @return mixed[]
  */
 public function achieveGoal($integration, $call_name, $contact_id)
 {
     $tries = 0;
     do {
         $result = parent::achieveGoal($integration, $call_name, $contact_id);
     } while ((!is_array($result) || !$result[0]['success']) && ++$tries < 3);
     if (!is_array($result) || !$result[0]['success']) {
         file_put_contents(dirname(__FILE__) . '/log.txt', "Call to achieveGoal failed ({$tries} tries): " . PHP_EOL . print_r($integration, TRUE) . PHP_EOL . print_r($call_name, TRUE) . PHP_EOL . print_r($contact_id, TRUE) . PHP_EOL . print_r($result, TRUE) . PHP_EOL . PHP_EOL, FILE_APPEND);
     }
     return $result;
 }