docs: def init_app(kls):
      """
      To bind middlewares, plugins that needs the 'app' object to init
      Bound middlewares will be assigned on cls.init()
      """
      if not hasattr(kls, "__call__"):
          raise TypeError("init_app: '%s' is not callable" % kls)
      View._init_apps.add(kls)
      return kls