This is a very odd behaviour, but once again it might be me doing something wrong. Please don't spend too much time on it as I have a workaround ready.
I display cargo content using showCargo, cargo that is passed comes directly from submarketAPI.getCargo(). The intel also has a button that when clicked displays show interaction dialog (ui.showDialog). Interaction dialog has nothing in it, just calls showCargoPickerDialog and handles cargo transfer (from player to submarket).
All is fine if I initially display intel (intel screen), and once again is fine after clicking button and picking cargo from storage (intel is updated via ui.updateUIForItem after successful handler for picker terminates). But on the second button press, after transferring cargo again, ui.updateUIForItem hangs, specifically call to showCargo just hangs.
So far I have fixed this by creating a copy of cargo instead of using submarket's getCargo() directly. Which leads me to thinking that perhaps (since no time has passed game-wise between those cargo updates), the submarkets cargo is somehow dirty, and I avoid the problem with it (either in cargo or in showCargo) by creating a new object.