docs: def call_or_cast(self, method, args={}, nowait=False, **kwargs):
          """Apply remote `method` asynchronously or synchronously depending
          on the value of `nowait`.
  
          :param method: The name of the remote method to perform.
          :param args: Dictionary of arguments for the method.
          :keyword nowait: If false the call will block until the result
             is available and return it (default), if true the call will be
             non-blocking and no result will be returned.
          :keyword retry: If set to true then message sending will be retried
            in the event of connection failures. Default is decided by the
            :attr:`retry` attributed.
          :keyword retry_policy: Override retry policies.
             See :attr:`retry_policy`.  This must be a dictionary, and keys will
             be merged with the default retry policy.
          :keyword timeout: Timeout to wait for replies in seconds as a float
             (**only relevant in blocking mode**).
          :keyword limit: Limit number of replies to wait for
             (**only relevant in blocking mode**).
          :keyword callback: If provided, this callback will be called for every
            reply received (**only relevant in blocking mode**).
          :keyword \*\*props: Additional message properties.
             See :meth:`kombu.Producer.publish`.
  
          """
          return (nowait and self.cast or self.call)(method, args, **kwargs)