'Continually pulls from the control socket, directing the messages into
queues based on their type. Controller messages come in two varieties...
* Responses to messages we\'ve sent (GETINFO, SETCONF, etc).
* Asynchronous events, identified by a status code of 650.'

def _reader_loop(self):

    while self.is_alive():
        try:
            control_message = self._socket.recv()
            self._last_heartbeat = time.time()
            if (control_message.content()[(-1)][0] == '650'):
                self._event_queue.put(control_message)
                self._event_notice.set()
            else:
                self._reply_queue.put(control_message)
        except stem.ControllerError as exc:
            self._reply_queue.put(exc)
