private function doWrite()
{
$bytesToWrite = strlen($this->buffer);
$bytesWritten = @fwrite($this->socket, $this->buffer);
$this->bytesWritten += $bytesWritten;
if ($bytesToWrite === $bytesWritten) {
$this->promisor->update($this->buffer);
$this->succeed();
} elseif (empty($bytesWritten) && $this->isSocketDead()) {
$this->fail(new SocketException($this->generateWriteFailureMessage()));
} else {
$notifyData = substr($this->buffer, 0, $bytesWritten);
$this->buffer = substr($this->buffer, $bytesWritten);
$this->promisor->update($notifyData);
$this->enableWriteWatcher();
}
}