async def METHOD_NAME(self, search_id, offset, length):
    observations = []
    return_obj = dict()
    is_stix_21 = self.connection['options'].get("stix_2.1")
    stix_version = '2.1' if is_stix_21 else '2.0'
    if not is_stix_21 and self.test_START_STOP_format(search_id):
        # Remove leading 't' before timestamps from search_id. search_id is the stix pattern
        search_id = re.sub("(?<=START\s)t|(?<=STOP\s)t", "", search_id)
    response = None
    if self.connection['options'].get('error_type') == ERROR_TYPE_TIMEOUT:
        # httpstat.us/200?sleep=60000 for slow connection that is valid
        await self.client.call_api('https://httpstat.us/200?sleep=60000', 'get', timeout=self.timeout)
    elif self.connection['options'].get('error_type') == ERROR_TYPE_BAD_CONNECTION:
        # www.google.com:81 for a bad connection that will timeout
        response = await self.client.call_api('https://www.google.com:81', 'get', timeout=self.timeout)
    if not response:
        response = await self.client.call_api(self.bundle_url, 'get', timeout=self.timeout)
    if response.code != 200:
        response_txt = response.raise_for_status()
        if ErrorResponder.is_plain_string(response_txt):
            ErrorResponder.fill_error(return_obj, message=response_txt, connector=self.connector)
        elif ErrorResponder.is_json_string(response_txt):
            response_json = json.loads(response_txt)
            ErrorResponder.fill_error(return_obj, response_json, ['reason'], connector=self.connector)
        else:
            raise UnexpectedResponseException
    else:
        try:
            response_txt = response.read().decode('utf-8')
            bundle = json.loads(response_txt)
            for obj in bundle["objects"]:
                if obj["type"] == "observed-data":
                    observations.append(obj)
            # Pattern match
            try:
                results = self.match(search_id, observations, False, stix_version)
                if len(results) != 0:
                    return_obj['success'] = True
                    return_obj['data'] = results[int(offset):int(offset + length)]
                else:
                    return_obj['success'] = True
                    return_obj['data'] = []
            except Exception as ex:
                ErrorResponder.fill_error(return_obj,  message='Object matching error: ' + str(ex), connector=self.connector)
        except Exception as ex:
            ErrorResponder.fill_error(return_obj,  message='Invalid STIX bundle. Malformed JSON: ' + str(ex), connector=self.connector)
    return return_obj