public function publishState(Subscription $subscription)
    {
        //Pause all non-state building event messages
        $subscription->pauseForState();

        $sessionId = $subscription->getSession()->getSessionId();

        $this->clientSession->call($this->getProcedureName(),
            [$subscription->getUri(), $sessionId, $subscription->getOptions(), $subscription->getSession()->getAuthenticationDetails()])->then(
            function ($res) use ($subscription) {
                $pubId = null;
                if (isset($res[0])) {
                    $pubId = $res[0];
                }
                $subscription->unPauseForState($pubId);
            },
            function ($error) use ($subscription) {
                Logger::error($this, "Could not call '{$this->getProcedureName()}'");
                $subscription->unPauseForState();
            }
        );

    }