The core serial configuration seems to be buggy: it seems to just stop periodically, as documented here, with a possible fix:
https://community.home-assistant.io/t/serial-integration-is-unstable/179222/9
However, when I try to implement the fix by creating an overriding custom component, the new serial component cannot be loaded because of a conflict between the serial_asyncio and asyncio libraries (related to a missing coroutine attribute in asyncio).
This isn’t a bug in the fix: even if you copy and paste the existing serial component code into a custom component, the conflict arises.