docs: async def _find_trigger(self,
                              request: Request,
                              origin: Optional[Text]=None,
                              internal: bool=False) \
              -> Tuple[
                  Optional[BaseTrigger],
                  Optional[Type[BaseState]],
                  Optional[bool],
              ]:
          """
          Find the best trigger for this request, or go away.
          """
  
          reg = request.register
  
          if not origin:
              origin = reg.get(Register.STATE)
              logger.debug('From state: %s', origin)
  
          results = await asyncio.gather(*(
              x.rank(request, origin)
              for x
              in self.transitions
              if x.internal == internal
          ))
  
          if len(results):
              score, trigger, state, dnr = max(results, key=lambda x: x[0])
  
              if score >= settings.MINIMAL_TRIGGER_SCORE:
                  return trigger, state, dnr
  
          return None, None, None