perfparser already has the capability to buffer and sort events in order to mitigate time order violations across buffer flushes. However, once it detects FINISHED_ROUND events it doesn't do this anymore, even if it subsequently detects more time order violations.
This forces the receiver of the event stream to either do the same buffering again, or potentially replay the whole event stream from the beginning when a time order violation is detected.
It would be much more practical if perfparser restarted the buffering upon detecting a time order violation, increasing the buffer size with each subsequent one. Then the output stream would get "better" over time and expensive reparsing of events on the client side would become less and less likely the further the stream advances.