private function _handleTransportException(Exception $e, ehough_shortstop_api_HttpRequest $request, ehough_chaingang_api_Context $context, $isDebugEnabled, ehough_epilog_psr_LoggerInterface $logger) { $this->_tearDown($request, true); /** * Fire an error event. */ $transportFailureEvent = new ehough_tickertape_GenericEvent($this, array('request' => $request, 'response' => $context->containsKey('response') ? $context->get('response') : null, 'exception' => $e, 'rethrow' => false, 'tryOtherTransports' => true)); $this->_eventDispatcher->dispatch(ehough_shortstop_api_Events::TRANSPORT_FAILURE, $transportFailureEvent); if ($transportFailureEvent->getArgument('rethrow')) { if ($isDebugEnabled) { $logger->error(sprintf('Caught exception when handling %s (%s). Will re-throw.', $request, $e->getMessage())); } throw new ehough_shortstop_api_exception_RuntimeException($e->getMessage()); } if ($transportFailureEvent->getArgument('tryOtherTransports')) { if ($isDebugEnabled) { $logger->debug('Transport failed, but trying the next...'); } return false; } if ($isDebugEnabled) { $logger->debug('Transport failed, and not trying any others...'); } return true; }