def METHOD_NAME(self, chamber=None):
    chambers = [chamber] if chamber is not None else ["upper", "lower", "other"]
    html = self.get(mi_events).text
    page = lxml.html.fromstring(html)
    page.make_links_absolute(mi_events)
    xpaths = {
        "lower": "//span[@id='frg_mcommitteemeetings_HouseMeetingsList']",
        "upper": "//span[@id='frg_mcommitteemeetings_SenateMeetingsList']",
        "other": "//span[@is='frg_mcommitteemeetings_JointMeetingsList']",
    }
    if page.xpath(
        "//span[contains(text(),'There are no House meetings scheduled')]"
    ) and page.xpath(
        "//span[contains(text(),'There are no Senate meetings scheduled')]"
    ):
        raise EmptyScrape
        return
    event_objects = set()
    for chamber in chambers:
        span = page.xpath(xpaths[chamber])
        if len(span) > 0:
            span = span[0]
        else:
            continue
        events = span.xpath(".//a[contains(@href, 'committeemeeting')]")
        for event in events:
            url = event.attrib["href"]
            if "doPostBack" in url:
                continue
            for event in self.scrape_event_page(url, chamber):
                event_name = event.dedupe_key
                if event_name in event_objects:
                    self.warning(f"Skipping duplicate event: {event_name}")
                    continue
                event_objects.add(event_name)
                yield event