I have tried to find a solid answer to this transaction request question and the practical and technical problems that do not seem solved.
My understanding is that after creating a transaction, I can choose to add a fee so that the miners can pick up my transaction. I present it to the network for its propagation. The miners look in the group of unspent transactions and choose what they want to include in a new block. I saw this Tweet that seems to confirm a transaction order problem: the use of the same transaction entry for two transactions, the latter being a high rate and the one confirmed first. I do not understand why several respondents seem to believe that this is not a problem.
I'm close to 2 stores that accept Bitcoin. I spend a contribution in Costco without any or a small fee. It hangs in the mempool as above. One hour later, I'm at BestBuy and I'm spending the same information but I include a fee, and that transaction is collected and processed by a happy miner.
1) Even if Costco waited an hour, there is no guarantee that my previous transaction will be confirmed in a block in 10 minutes or 210 minutes. It is still too long for BestBuy to wait for 5 additional confirmations after the first one.
2) There is no guarantee that even if the first Costco transaction was picked up by a miner, a second mining company that picked up the BestBuy transaction a little later could not complete a block that would eventually be in the longer chain. Also in that case, the first one in the transaction finally bounces off the chain.