The name of the function suggests that the given message will be queued in ReorderBuffer. The prologue of the function says so too
776 /* 777 * Queue message into a transaction so it can be processed upon commit. 778 */
It led me to think that a non-transactional message is processed along with the surrounding transaction, esp. when it has an associated xid.
But in reality, the function queues only a transactional message and decoders a non-transactional message immediately without waiting for a commit.
We should modify the prologue to say
"Queue a transactional message into a transaction so that it can be processed upon commit. A non-transactional message is processed immediately." and also change the name of the function to ReorderBufferProcessMessage(), but the later may break API compatibility.