class_docstr: Key binding: (key sequence + handler + filter).
  (Immutable binding class.)
  
  :param record_in_macro: When True, don't record this key binding when a
      macro is recorded.
code: def call(self, event: KeyPressEvent) -> None:
      result = self.handler(event)
  
      # If the handler is a coroutine, create an asyncio task.
      if isawaitable(result):
          awaitable = cast(
              Coroutine[Any, Any, "NotImplementedOrNone"], result
          )
  
          async def bg_task() -> None:
              result = await awaitable
              if result != NotImplemented:
                  event.app.invalidate()
  
          event.app.create_background_task(bg_task())
  
      elif result != NotImplemented:
          event.app.invalidate()
  
imports: from __future__ import annotations
  from abc import ABCMeta, abstractmethod, abstractproperty
  from inspect import isawaitable
  from typing import TYPE_CHECKING, Any, Callable, Coroutine, Hashable, Sequence, Tuple, TypeVar, Union, cast
  from prompt_toolkit.cache import SimpleCache
  from prompt_toolkit.filters import FilterOrBool, Never, to_filter
  from prompt_toolkit.keys import KEY_ALIASES, Keys
label_desc: Use image node_id 2 for calling the Binding obj's underlying member method code with example usage: obj.call(event) without return types