Well, ok.

Normal flow: User clicks button, this gets send to IIS/WAS and they tell webapp.exe that the button was clicked. Webapp.exe does it's job and reports back.
But now webapp.exe does not respond. It is in a loop or wait's for something else (like your sleep command) and it will not report back. Something went wrong. IIS/WAs should not wait forever, right? At some point you just have to assume something went wrong and that after the 120s message timeout.

Transaction timeout is pretty much the same thing, for the classic asp-messages.

Termination timeout: I'm assuming this is for when WAS tells the webapp.exe to close. If it does not close within the timeout webapp.exe get's terminated, but I'm not sure.

so in short: when you get these timeouts, something went wrong already before that. As WAS does not know what went wrong, it cannot be reported.

For most of my project I log every action call, which helps a lot with finding such a problem. But it is a bit too much to explain with a simple forum post and most DF developer will not be very interested.