/**
  * Create a new driver instance.
  *
  * @param  string $driver
  * @return mixed
  *
  * @throws \InvalidArgumentException
  * @throws Exception
  */
 protected function createDriver($driver)
 {
     try {
         return parent::createDriver($driver);
     } catch (Exception $e) {
         if ($newDriver = $this->nextDriver($driver)) {
             return $this->createDriver($newDriver);
         }
         throw $e;
     }
 }