So:

<binding - yada yada yada sendTimeout="00:05:00" ....

OK. If the calling service spends a lot of time then it will error out no matter what. Will go to the service reference code and error with a service timeout.
The timeout usually occurs in a completeO.complete call in function that, of course, have inside a try catch block.
But it will skip the block and go to service reference timeout errors anyhow.
I was thinking of adding a global.asax so i can catch the error there as, supposedly will catch any unhandled error (although i do try catch) but I am not sure. My guess is that it may probably go to service reference again let alone that global.asax is called in everything from now on, again and again and again. The reference error happens on the calling application. So as i debug through code, i get to the completeO.complete call , this is debugging from the main WCF app. So sometimes it will wait, wait, wait and boom, skip the try catch an go to the service reference timeout error. I have put both sendTimeout="00:05:00" on calling and main WCF.

So to sum it.
application -> MyWCF -> 3rd party WCF .
I have 5 minutes timeout on application that calls my WCF and 5 minutes on my WCF public methods for the main app and 5 minutes on the methods that calls the 3rd party WCF.
I cannot get into the 3rd party WCF and set timeout as it's not our own and i do not have debug access to it.
So the last reason I was suspecting was the 3rd party WCF times out but I was thinking that the main WCF will catch the 3rd party timeout.
Confusing. If clarification needed let me know.