RunResult<T> () { try { myActionRunnable.run(this); } catch (ProcessCanceledException e) { throw e; // this exception may occur from time to time and it shouldn't be caught } catch (Throwable t) { myThrowable = t; ExceptionUtil.rethrowAllAsUnchecked(t); } finally { myActionRunnable = null; } return this; }