code: protected <RESULT> Task.Monitor<RESULT> runTask(final Task<RESULT> task,
                                                      final Task.Callback<RESULT> callback) {
          return runTask(executorService, task, callback);
      }
docs: Run a task on threads supplied by injected {@link ExecutorService}. By default it runs tasks
  on separate threads by {@link ExecutorService} injected from AndroidMvc framework. A simple
  {@link ExecutorService} that runs tasks on the same thread in test cases to make the test
  easier.
  
  <p>The methods of callback will be guaranteed to be run Android's UI thread</p>
  
  <p><b>
  User the protected property {@link UiThreadRunner} to post action back to main UI thread
  in the method block of {@link Task#execute(Task.Monitor)}.
  </b></p>
  <pre>
  uiThreadRunner.post(new Runnable() {
  @Override
  public void run() {
  view.update();
  }
  });
  </pre>
  
  @param task            The task
  @param callback        The callback
  @return The monitor to track the state of the execution of the task. It also can cancel the
  task.