When developing software applications that rely heavily on communication protocols, one of the key concerns is that the application is handling incoming data quickly enough that messages are not dropped. This situation could be caused by the application spending too much time processing a message, the application is paused waiting for user interaction, or the application is waiting on a shared system resource like a data file. Regardless of the cause, the application developer should plan to detect these dropped messages to prevent searching for a system problem when the error was caused by the application behavior.