Currently we use a std::list for the message queue. This is a doubly-linked list. However, we never insert things in the middle, we only really pull from the front or append to the back. Thus we can replace std::list with std::forward_list, which saves a bit of memory per message (8 bytes, plus having to set the back pointers).
Not the highest priority PR, but a decent refactor I spotted while looking at this code for an unrelated reason that doesn’t add that much code complexity. Shakes fist at STL for not making std::forward_list store a tail pointer, but it’s easy enough to implement on your own.