code: @Override
      public boolean cancel(boolean mayInterruptIfRunning) {
          synchronized (lock) {
              if (!mIsStarted) {
                  mIsCancelled = true;
                  lock.notifyAll();
              }
          }
          return mIsCancelled;
      }
docs: Normally, a Future.cancel(true) means you can force interrupt the thread
  which is running the request.But GVRFutureOnGlThread will probably run on
  GL thread. An Interruption on GL thread means forced stop on the app. So
  currently we only support the cancellation before the task get executed.
  
  @return if the cancellation request is successful.