Support promises in menu generation

Some of the data may take some time to get from the services, so
the menu should be able to resolve promises. It now does.