code: protected Runnable createRunnable(ConcurrentAsyncCall call, String keyword) { // in caller thread
          final Map<String, Object> threadCacheMap = inheritThreadCacheContext(call);
          final AccessContext accessContext = inheritAccessContext(call);
          final CallbackContext callbackContext = inheritCallbackContext(call);
          final Map<String, Object> variousContextMap = findCallerVariousContextMap();
          return () -> { // in new thread
              prepareThreadCacheContext(call, threadCacheMap);
              preparePreparedAccessContext(call, accessContext);
              prepareCallbackContext(call, callbackContext);
              final Object variousPreparedObj = prepareVariousContext(call, variousContextMap);
              final long before = showRunning(keyword);
              Throwable cause = null;
              try {
                  call.callback();
              } catch (Throwable e) {
                  handleAsyncCallbackException(call, before, e);
                  cause = e;
              } finally {
                  showFinishing(keyword, before, cause); // should be before clearing because of using them
                  clearVariousContext(call, variousContextMap, variousPreparedObj);
                  clearCallbackContext(call);
                  clearPreparedAccessContext(call);
                  clearThreadCacheContext(call);
              }
          };
      }
docs: ===============