async def _run_state(self, responder, state, trigger, request)-> BaseState:
user_trigger = trigger<EOL>try:<EOL><INDENT>if trigger:<EOL><INDENT>await state.handle()<EOL><DEDENT>else:<EOL><INDENT>await state.confused()<EOL><DEDENT>for i in range(<NUM_LIT:0>, settings.MAX_INTERNAL_JUMPS + <NUM_LIT:1>):<EOL><INDENT>if i == settings.MAX_INTERNAL_JUMPS:<EOL><INDENT>raise MaxInternalJump()<EOL><DEDENT>trigger, state_class, dnr =await self._find_trigger(request, state.name(), True)<EOL>if not trigger:<EOL><INDENT>break<EOL><DEDENT>logger.debug('<STR_LIT>', state_class.name())<EOL>state = state_class(request, responder, trigger, user_trigger)<EOL>await state.handle()<EOL><DEDENT><DEDENT>except Exception:<EOL><INDENT>logger.exception('<STR_LIT>', state.name())<EOL>responder.clear()<EOL>reporter.report(request, state.name())<EOL>await state.error()<EOL><DEDENT>return state<EOL>
Execute the state, or if execution fails handle it.