Streaming codes (SCs) are packet-level codes that recover erased packets within a strict decoding-delay deadline. SCs for various packet erasure channel models such as sliding-window (SW) channel models that admit random or burst erasures in any SW of a fixed length have been studied in the literature, and their optimal rate has been characterized. In this paper, we study error-correcting streaming codes (\(text{SC}_{\text{\tiny ERR}}\)s), i.e., packet-level codes which recover erroneous packets within a delay constraint. We study \(\text{SC}_{\text{\tiny ERR}}\)s for two classes of SW channel models, one that admits random packet errors, and another that admits multiple bursts of packet errors, in any SW of a fixed length. For the case of random packet errors, we establish the equivalence of an \(\text{SC}_{\text{\tiny ERR}}\) and a corresponding SC that recovers from random packet erasures, thus determining the optimal rate of an \(\text{SC}_{\text{\tiny ERR}}\) for this setting. We then focus on SCs that recover from multiple erasure bursts and derive a rate-upper-bound for such SCs. We show the necessity of a divisibility constraint for the existence of an SC constructed by the popular diagonal embedding technique, that achieves this rate-bound under a stringent delay requirement. Sufficiency of this divisibility constraint follows from a construction known in prior literature. We further show the equivalence of the SCs considered and \(\text{SC}_{\text{\tiny ERR}}\)s for the setting of multiple error bursts, under a stringent delay requirement.