I wasn't intimate with the first go of designing this, but is my interpretation correct (from what I remember when doing little code edits here and there), that JNEXT.invoke() appeared to block, at which point the user would interact with the various dialogs (if necessary for the particular call), and only once that bps event cycle was completed would JNEXT.invoke return val, and this call would continue?

Given that the calling app will essentially be blocked while the dialogs are on screen, is there a need for async? again, just trying to catch up on the design...i believe the overarching concern was under which circumstances the calling app would get blocked etc. There are a few paymentservice calls, for example, that would potentially take some time (such as going to the server to get purchase history) but require no dialogs, so the calling app could potentially continue while waiting for the callback, ideally. I am not sure of all the implications but I believe this was the initial reasoning.