Found out what the problem was - I'm using Thrift for RPC, and was initialising the underlying Thrift socket with a connection timeout of zero (i.e. infinite). When there was a network disconnection, it appeared the FX UI thread was getting starved and the app freezes. All good now, and FX is fine.