def METHOD_NAME(self):
    # This is unique because coinbase first sends the entire orderbook to use
    if self.__pre_event_callback is not None and self.__stream == "level2":
        received_string = json.loads(self.ws.recv())
        if received_string['type'] == 'snapshot':
            try:
                self.__pre_event_callback(received_string)
            except Exception:
                traceback.print_exc()
    counter = 0
    # TODO port this to "WebSocketApp" found in the websockets documentation
    while self.ws.connected:
        # In case the user closes while its reading from the websocket, this will let it expire
        persist_connected = self.ws.connected
        try:
            received_string = self.ws.recv()
            received = json.loads(received_string)
            # Modify time to use epoch
            self.__most_recent_time = blankly.utils.epoch_from_iso8601(received["time"])
            received["time"] = self.__most_recent_time
            self.__time_feed.append(self.__most_recent_time)
            if self.__log:
                if counter % 100 == 0:
                    self.__file.close()
                    self.__file = open(self.__filePath, 'a')
                line = self.__logging_callback(received)
                self.__file.write(line)
            # Manage price events and fire for each manager attached
            interface_message = self.__interface_callback(received)
            self.__ticker_feed.append(interface_message)
            self.__most_recent_tick = interface_message
            try:
                for i in self.__callbacks:
                    i(interface_message)
            except Exception:
                traceback.print_exc()
            counter += 1
        except Exception as e:
            if persist_connected:
                traceback.print_exc()
                pass
            else:
                traceback.print_exc()
                print("Error reading ticker websocket for " + self.__id + " on " +
                      self.__stream + ": attempting to re-initialize")
                # Give a delay so this doesn't eat up from the main thread if it takes many tries to initialize
                time.sleep(2)
                self.ws.close()
                # Update response
                self.response = self.ws.recv()