':returns: item_list - list of SNSItem\'s.
:returns: exception_map - A dict where the keys are a tuple containing the
location of the exception and the value is the actual exception'

def slurp(self):

    self.prep_for_slurp()
    item_list = []
    exception_map = {}
    for account in self.accounts:
        for region in regions():
            try:
                (sns, topics) = self.get_all_topics_in_region(account, region)
            except Exception as e:
                if (region.name not in TROUBLE_REGIONS):
                    exc = BotoConnectionIssue(str(e), 'sns', account, region.name)
                    self.slurp_exception((self.index, account, region.name), exc, exception_map, source='{}-watcher'.format(self.index))
                continue
            app.logger.debug('Found    {}    {}'.format(len(topics), SNS.i_am_plural))
            for topic in topics:
                arn = topic['TopicArn']
                if self.check_ignore_list(arn.split(':')[5]):
                    continue
                item = self.build_item(arn=arn, conn=sns, region=region.name, account=account, exception_map=exception_map)
                if item:
                    item_list.append(item)
    return (item_list, exception_map)
