/**
  * Run the specific task
  * 
  * @param Lilmuckers_Queue_Model_Queue_Task $task The task to run
  * 
  * @return Lilmuckers_Queue_Model_Queue_Abstract
  * 
  * @throws Lilmuckers_Queue_Model_Queue_Db_Exception
  */
 public function runTask(Lilmuckers_Queue_Model_Queue_Task $task)
 {
     //run the task and get the result status
     switch ($task->run()) {
         case Lilmuckers_Queue_Model_Queue_Task::TASK_CONFIG_ERROR:
         case Lilmuckers_Queue_Model_Queue_Task::TASK_ERROR:
         case Lilmuckers_Queue_Model_Queue_Task::TASK_HOLD:
             //if it's a configuration error - bury it
             $this->hold($task);
             break;
         case Lilmuckers_Queue_Model_Queue_Task::TASK_DATABASE_ERROR:
             //flag this for a retry, and then throw a DB error
             //for the queue watcher script to catch
             $this->retry($task);
             throw new Lilmuckers_Queue_Model_Queue_Db_Exception('Unspecified database connection error');
             break;
         case Lilmuckers_Queue_Model_Queue_Task::TASK_RETRY:
             //this has been flagged for a retry
             $this->retry($task);
             break;
         case Lilmuckers_Queue_Model_Queue_Task::TASK_SUCCESS:
         default:
             //for success and default behavour - remove from queue
             $this->remove($task);
             break;
     }
     return $this;
 }