public void run()
    {
        try {
            runImpl();
        } catch(Throwable e) {
            log.log(Level.WARNING, id+"Exception in media", e);
            FireFailureOnClientThread r = new FireFailureOnClientThread(e, id);
            //put on event thread so client can't tie up our threads!!!
            executor.execute(r);
        }
    }