private function send($msg) : \Amp\Promise
{
if (!$this->sock) {
$this->establish();
} elseif (!$this->writeWatcher) {
$this->writeWatcher = \Amp\onWritable($this->sock, $this->writer);
}
$msg = json_encode($msg);
$this->buf .= pack("N", \strlen($msg)) . $msg;
return ($this->promisors[\strlen($this->buf)] = new \Amp\Deferred())->promise();
}