Socket.io disconnect firing for all connected sockets when one disconnects?

Basically, what's happening is my socket.on('disconnect', ...) is firing for all connected sockets fairly randomly after one such connected user has closed their tab.

For example, this sequence of events recreates the scenario 95% of the time:

User 1 connected (tab 1)
User 1 connected (tab 2)
User 2 connected (tab 1)
User 1 closes tab 1
User 1 tab 1 disconnect
User 1 tab 2 disconnect (but the tab isn't closed!)
User 2 tab 1 disconnect (this is in a completely different browser that is still open!)

The other 5% of cases result in all users disconnecting if user 1 refreshes one of the tabs after either user closed one of their tabs.

Whereas just refreshing/reloading the tab to "disconnect", without ever closing a tab, works just fine:

User 1 connected (tab 1)
User 1 connected (tab 2)
User 2 connected (tab 1)
User 1 refreshes tab 1
User 1 tab 1 disconnect
User 1 connected (tab 1)

As far as I can tell the layout of my socket.io stuff should be correct:

router.get('/', function(req, res) {
    //router stuff providing this here to show my io stuff is 
    //outside of the router function
});

io.on('connection', function(socket) {
    console.log('User has connected');
    socket.on('disconnect', function() {

        console.log('User has disconnected');
    }
}

I'm having difficulty figuring out just how disconnect is being called for all connected clients/sockets when one such client/socket closes their browser tab...or even how that should be possible in the first place.

I can 100% confirm that I am not emitting 'disconnect' myself anywhere in my code.