private function parseSocketData(RequestCycle $cycle)
{
try {
while ($parsedResponseArr = $cycle->parser->parse()) {
if ($parsedResponseArr['headersOnly']) {
$data = [Notify::RESPONSE_HEADERS, $parsedResponseArr];
$cycle->futureResponse->update($data);
continue;
} elseif (isset($cycle->continueWatcher) && $parsedResponseArr['status'] == 100) {
$this->proceedFrom100ContinueState($cycle);
} else {
$this->assignParsedResponse($cycle, $parsedResponseArr);
}
if ($cycle->parser->getBuffer()) {
\Amp\immediately(function () use($cycle) {
$this->parseSocketData($cycle);
});
}
break;
}
} catch (ParseException $e) {
$this->fail($cycle, $e);
}
}