Convert all remote requests to use Promises to ensure that all requests are queued. This fixes the issue where if fetchGroups() takes longer than fetch(), the grid would break.