What does trace say ? Also, Can you check what is the fault name in the trace ? Keep us posted.
I don’t think “ErrorResponseCode” is actual fault name. Use the fault name based on error. If you would like to execute log policy no matter what, use default fault rule.
I just came across a similar use case and while tracing I noticed that backend errors, by default, will cause the proxy to enter the target fault flow and sets
fault.name = ErrorResponseCode
So now, in my fault flow, I can differentiate between faults raised in Edge and error responses from the backend, so I can then extract information from the Edge fault or from the backend response.