Reinstate asynchronicity

Big refactor that implements `when` promise structure to make all three
API calls asynchronous and improves load time. Big thanks to @ascott1
for pushing me in the right direction!