I don't have an eth2 to check this on but it works correctly on eth0 and I see no reason why eth2 should be magical. I presume you're using
ip addr show dev eth2 as
ifconfig eth2 doesn't appear to show the additional addresses added by ip.
One thing I have noticed is that the order you create/delete the addresses is important. The second and subsequent addresses added within the same network will be deleted if the primary address is deleted. Consider ...
inet 18.104.22.168/24 scope global eth0
inet 22.214.171.124/24 scope global eth0
inet 126.96.36.199/24 scope global secondary eth0
inet 188.8.131.52/24 scope global secondary eth0
If you delete 184.108.40.206 then the 1.2 and 1.3 addresses will be deleted too. If you delete any other address then only that address will be deleted.