Took a quick look and looks good. Added to Git and I'll look at merging the two -- the menu generation is a bit more fleshed out in what I made (separates by whether we know it's good or bad).
Might be a small issue in replacing the promise object with the actual object, depending on how the addon uses it. Example:
Control create - promise at index x100
_G[Control] = x100
returned value = x100
On control create, replace with actual object (x200)
Set _G[Control] to x200
However, if the addon kept the return value, it's still x100 and not pointing to the actual object.
Should be able to fix by adjusting the metatable.