I guess that the
```return 1;```
should be:
```return 1 + USB_Available(CDC_RX);```

To avoid situations where queued chars may seems to "disappear":

```
av1 = Serial.available(); // av1 may be > 1
Serial.peek();
av2 = Serial.available(); // after the peek av2 is 1

assert(av2>=av1); // Assertion fails if av1>1
```