It's not a third attempt actual. The default a chat engine (an agent) has 3 steps I described earlier
- Read user message, either generate a response or write an input to a tool (i.e. the tool in this case is a query engine)
- Run the tool with the query (i.e. run the query engine, which retrieves + writes response)
- Interpret response in context of previous chat history, give user final answer