In many cases, it is really important to send a NAK message in case of message processing failure, instead of only working with timeouts.
First of all, working with timeouts is not trustable. If it is too brief, a simple network slowness can make processed messages by the receiver be treated as an error.
By creating the NAK message, it guarantees to the sender that there was an error on the sent message. Moreover, a description of the error can be added to the NAK messages, making it easier for the sender to know where is the root of the problem, easing the communication.
Its pretty simple to implement