That seems like a possibility. But 30s polling is for checking if some node has breached its limit and needs migration. I am assuming before issuing an actual relocation command, it is ensured that the node on which the shard is being sent has enough free space. In case it doesn't, the shard is not sent to that node. (no documentation for this case)
In my case relocations were triggered when multiple nodes reached their high thresholds limit at similar time. I had faced a similar situation in the past too, at that time we had lost one node.
Also checkout this question of mine: Regarding cluster.routing.allocation.disk.include_relocations => What do you think happens in such a case?