def async_call(self, fn, *args, **kwargs):
call_point = '<STR_LIT>'.join(format_stack(None, <NUM_LIT:5>)[:-<NUM_LIT:1>])<EOL>def handler():<EOL><INDENT>try:<EOL><INDENT>fn(*args, **kwargs)<EOL><DEDENT>except Exception as err:<EOL><INDENT>msg = ("<STR_LIT>"<EOL>"<STR_LIT>"<EOL>.format(err, format_exc_skip(<NUM_LIT:1>), call_point))<EOL>self._err_cb(msg)<EOL>raise<EOL><DEDENT><DEDENT>self._session.threadsafe_call(handler)<EOL>
Schedule `fn` to be called by the event loop soon.

        This function is thread-safe, and is the only way code not
        on the main thread could interact with nvim api objects.

        This function can also be called in a synchronous
        event handler, just before it returns, to defer execution
        that shouldn't block neovim.