That is possible, but then we will need to traverse all sessions periodically to find timed out transfers. This may be difficult to arrange in some time-sensitive applications.
Alternatively, we could keep a view of all sessions ordered by the last update time, and check that view every time the receive function is invoked, without having to extend the API. The default timeout could be some multiple of the transfer-ID timeout. This can be done after the "significant completion" is reached.
_Originally posted by @pavel-kirienko in https://github.com/OpenCyphal-Garage/libudpard/pull/38#discussion_r1267378423_