Extract info from data and emit completed.

def _completed_cb(self, data):
        """ Extract info from data and emit completed. """
        try:
            info = json.loads(data)
        except ValueError:
            info = self._hook_data(data)
        except Exception, e:
            info = None
            logging.error('%s: _completed_cb crashed with %s',
                          self.__class__.__name__, str(e))
        finally:
            self._hook_id(info)
            self.emit('completed', info)