Hm… As I understand it, you would need all† 3 Machines to be in the same region (sin) in order to get the designed/intended clustering behavior:
https://community.fly.io/t/does-postgres-regional-failover-happen-automatically/12458/3
My guess is that the routing that you saw was a side effect, and that both sin Machines were unsure whether they were really the primary at this point (since it was a 1-1 tie in the voting(?)). I’m not one of the forum’s Postgres clustering experts, though, so I could be wrong here.
Singapore does have Managed Postgres, so that would be the supported and really the best way to keep things like this from happening again.
†You can create remote replicas once you have a full three in the primary region. I.e., the nrt guy would be your fourth Machine.