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]);
 }