public function next(Packet $packet) { /* @var SubscribeResponsePacket $packet */ $returnCodes = $packet->getReturnCodes(); if (count($returnCodes) !== count($this->subscriptions)) { throw new \LogicException(sprintf('SUBACK: Expected %d return codes but got %d.', count($this->subscriptions), count($returnCodes))); } foreach ($returnCodes as $index => $code) { if ($packet->isError($code)) { $this->fail(sprintf('Failed to subscribe to "%s".', $this->subscriptions[$index]->getFilter())); return; } } $this->succeed($this->subscriptions[0]); }