RTS = Request To Send. The sending device is telling the other end to get ready to receive, and to set its CTS line when ready.
CTS = Clear To Send. The receiving end is ready ("all clear") and telling the far end to start sending the characters.
Long ago, half-duplex connections were common. These were one-way-at-a-time connections, and these signals were used to "turn the line around" so you didn't try to send when something was being sent to you.
Hardware handshaking, used improperly, was a classic "computer gets stuck" problem, and was so much trouble that the majority of implementers simply gave up trying to use this handshake method. That's why you were successful.
If characters continue to be sent after the far end says to stop, this may be due to the "FIFO" (First-In First-Out) in the device. This can store (buffer) several characters to be sent, so the computer doesn't have to stop and check after each character. But, as stated, it's sometimes hard to get it to stop! Hence the creation of receive buffers...