Use promise to prevent loading multiple times per api call.