private function writeBody(RequestCycle $cycle, $body)
{
try {
$writer = $this->writerFactory->make($body);
$writePromise = $writer->write($cycle->socket, $body);
$writePromise->watch(function ($update) use($cycle) {
$cycle->futureResponse->update([Notify::SOCK_DATA_OUT, $update]);
if ($cycle->options[self::OP_VERBOSITY] & self::VERBOSE_SEND) {
echo $update;
}
});
$writePromise->when(function ($error, $result) use($cycle) {
if ($error) {
$this->fail($cycle, $error);
} else {
$cycle->futureResponse->update([Notify::REQUEST_SENT, $cycle->request]);
}
});
} catch (\Exception $e) {
$this->fail($cycle, $e);
}
}