Regarding Promise not working on DataPower, wait.js works, just test it. So Promises do work.
I cannot tell what is wrong with your code.
But I did once write a GatewayScript that did asynchronous calls using urlopen. I did it without Promises I think, cannot find the code. The idea was to increment a global counter variable for each urlopen, and decrement it when urlopen completed. Main code joust uses wait counter to become 0 loop with sleeping.
I will try to find the code, but the idea is not difficult to implement freshly (code was GatewayScript equivalent to event sink action).
#DataPower#Support#SupportMigration