public function publish(ClientSession $session, $topicName, $arguments, $argumentsKw, $options)
{
$options = (object) $options;
$requestId = Utils::getUniqueId();
if (isset($options->acknowledge) && $options->acknowledge === true) {
$futureResult = new Deferred();
$this->publishRequests[$requestId] = ['future_result' => $futureResult];
}
$publishMsg = new PublishMessage($requestId, $options, $topicName, $arguments, $argumentsKw);
$session->sendMessage($publishMsg);
return isset($futureResult) ? $futureResult->promise() : false;
}