docs: public EncodingPredictor.DecodeResult receiveErrorString(int len) throws IOException {
      if (!pgInput.ensureBytes(len)) {
        throw new EOFException();
      }
  
      EncodingPredictor.DecodeResult res;
      try {
        String value = encoding.decode(pgInput.getBuffer(), pgInput.getIndex(), len);
        // no autodetect warning as the message was converted on its own
        res = new EncodingPredictor.DecodeResult(value, null);
      } catch (IOException e) {
        res = EncodingPredictor.decode(pgInput.getBuffer(), pgInput.getIndex(), len);
        if (res == null) {
          Encoding enc = Encoding.defaultEncoding();
          String value = enc.decode(pgInput.getBuffer(), pgInput.getIndex(), len);
          res = new EncodingPredictor.DecodeResult(value, enc.name());
        }
      }
      pgInput.skip(len);
      return res;
    }