/**
  * Reads a response asynchronously.
  * Warning if you don't retrieve the read this before you disconnect your response may be lost
  * please check if your object you are awaiting is supported in the eppResponse object by looking at the eppResponse
  * object's array property named "matcher"
  *
  * @return eppResponse
  * @throws eppException
  */
 public function readResponse()
 {
     $response = new eppResponse();
     $xml = $this->read(true);
     if (strlen($xml)) {
         if ($response->loadXML($xml)) {
             //$response = $response->instantiateProperResponse();
             $this->writeLog($response->saveXML(null, LIBXML_NOEMPTYTAG), "READ");
             //$clienttransid = $response->getClientTransactionId();
             $response->setXpath($this->getServices());
             $response->setXpath($this->getExtensions());
             $response->setXpath($this->getXpathExtensions());
             if ($response instanceof eppHelloResponse) {
                 $response->validateServices($this->getLanguage(), $this->getVersion());
             }
             return $response;
         }
     }
     return null;
 }