Make MainThreadRun() not virtual to handle error callback in one place. Add virtual OnSuccess() for subclass Runnables to call.