code: async def try_trigger_before_first_request_functions(self) -> None:
          
          if self._got_first_request:
              return
  
          # Reverse the teardown functions, so as to match the expected usage
          self.teardown_appcontext_funcs = list(reversed(self.teardown_appcontext_funcs))
          for key, value in self.teardown_request_funcs.items():
              self.teardown_request_funcs[key] = list(reversed(value))
          for key, value in self.teardown_websocket_funcs.items():
              self.teardown_websocket_funcs[key] = list(reversed(value))
  
          async with self._first_request_lock:
              if self._got_first_request:
                  return
              for function in self.before_first_request_funcs:
                  await function()
              self._got_first_request = True
docs: Trigger the before first request methods.