THe actual behavior is to poll for the mempool transactions and the conflicting transactions. The latter is actually not strictly needed: if a conflicting transaction exists, then there is an associated transaction living in the mempool. Because we pull back the conflicting transactions if the mempool one is rejected, it will naturally be polled as well when it reached the mempool.
This simplifies the logic and avoids some edge cases because mempool transactions have computed all the properties to check if they will fit in a block, despite conflicting transactions don't.