Dublicate transactions while listening pending transactions

Can you please explain me why the following code is receiving the same trx hash twice ? And do you have any recommmendation to avoid that ?

var Web3 = require('web3')
    const web3Subs = new Web3(new Web3.providers.WebsocketProvider('wss://mainnet.infura.io/ws/v3/XXX'))
    const web3Trx = new Web3(new Web3.providers.WebsocketProvider('wss://mainnet.infura.io/ws/v3/XXX'))
    const subscription = web3Subs.eth.subscribe('pendingTransactions')
    subscription.subscribe((error, txHash) => {
        if (error) console.log(error);
        console.log(txHash + " received.");
    })

output :

0x98219dad048aef55649d334a42c69ad094d3be1378f68b294aeaa2ef49ae2f97 received.
test.js:10
0x98219dad048aef55649d334a42c69ad094d3be1378f68b294aeaa2ef49ae2f97 received.
test.js:10
0x7f19d86f3c08c171060b0c29c0ad889dd7b2e69188ff6c8314caa4fb65e5b6a0 received.
test.js:10
0x7f19d86f3c08c171060b0c29c0ad889dd7b2e69188ff6c8314caa4fb65e5b6a0 received.

Hi there! This is actually normal Ethereum node behavior. Nodes may report a transaction multiple times if it receives a pending transaction over the peer-to-peer network. This may also happen due to reorg events when a transaction is reinserted into the pending transaction pool after a block reorg. Unfortunately there isn’t a way to avoid it. The thing you need to do in this case is determine how your application should behave in this instance based on your business logic. If you share more details on what you’re trying to accomplish after receiving a pending transaction event I might be able to make a suggestion on how to handle it.