code: public function read(CompositeConnectionInterface $connection)
      {
          $chunk = $connection->readLine();
          $prefix = $chunk[0];
          $payload = substr($chunk, 1);
  
          switch ($prefix) {
              case '+':
                  return new StatusResponse($payload);
  
              case '$':
                  $size = (int) $payload;
                  if ($size === -1) {
                      return;
                  }
  
                  return substr($connection->readBuffer($size + 2), 0, -2);
  
              case '*':
                  $count = (int) $payload;
  
                  if ($count === -1) {
                      return;
                  }
                  if ($this->mbiterable) {
                      return new MultiBulkIterator($connection, $count);
                  }
  
                  $multibulk = array();
  
                  for ($i = 0; $i < $count; ++$i) {
                      $multibulk[$i] = $this->read($connection);
                  }
  
                  return $multibulk;
  
              case ':':
                  $integer = (int) $payload;
  
                  return $integer == $payload ? $integer : $payload;
  
              case '-':
                  return new ErrorResponse($payload);
  
              default:
                  CommunicationException::handle(new ProtocolException(
                      $connection, "Unknown response prefix: '$prefix' [{$connection->getParameters()}]"
                  ));
  
                  return;
          }
      }
docs: {@inheritdoc}