def METHOD_NAME(self, intro=None):
    """Repeatedly issue a prompt, accept input, parse an initial prefix
    off the received input, and dispatch to action methods, passing them
    the remainder of the line as argument.
    override the same methods from cmd.Cmd to provide prompt toolkit replacement.
    """
    if not self.use_rawinput:
        raise ValueError('Sorry ipdb does not support use_rawinput=False')
    # In order to make sure that prompt, which uses asyncio doesn't
    # interfere with applications in which it's used, we always run the
    # prompt itself in a different thread (we can't start an event loop
    # within an event loop). This new thread won't have any event loop
    # running, and here we run our prompt-loop.
    self.preloop()
    try:
        if intro is not None:
            self.intro = intro
        if self.intro:
            print(self.intro, file=self.stdout)
        stop = None
        while not stop:
            if self.cmdqueue:
                line = self.cmdqueue.pop(0)
            else:
                self._ptcomp.ipy_completer.namespace = self.curframe_locals
                self._ptcomp.ipy_completer.global_namespace = self.curframe.f_globals
                # Run the prompt in a different thread.
                if not _use_simple_prompt:
                    try:
                        line = self.thread_executor.submit(
                            self.pt_app.prompt
                        ).result()
                    except EOFError:
                        line = "EOF"
                else:
                    line = input("ipdb> ")
            line = self.precmd(line)
            stop = self.onecmd(line)
            stop = self.postcmd(stop, line)
        self.postloop()
    except Exception:
        raise