getTabType now uses deferred promise to resolve tab type, allows for asynchronous type fetching