"The term asynchronous is usually used to describe communications in which data can be transmitted intermittently rather than in a steady stream" :
Now given this simple fact you might be surprised to discover that sometimes people forget that if you use asynchronous processes (such as workflow or asynchronous plugins) and you have dependencies particularly on a variety of async processes, timing might be an issue!
An interesting way to consider this is from the perspective of looking into a professional kitchen. Take the Master Chef (Mr. Processor): He must prepare certain items in sequence, for instance the pork chops have to be cut and spiced before they can be put in the pan to be cooked and before they can be prepared for display.
On the other hand if serving two vegtables for the same plate, if the broccoli comes out before the carrots, the chef (Mr. Processor) does not have a problem. The preparation of the broccoli and the carrots can happen in order, reverse order or at the same time. They can be asynchronous. They both need to be prepared in a timely manner (within the same approximate window of time) and they both need to get done within that time frame, but which gets done first doesn't matter that much. They are not dependent on each other.
Now the Chef might prefer the broccoli to come out first, as he has his own habits and best practices to make it all come together, but he can (and does) deal with the reality if they get reversed. On the other hand if an assistant chef forgets to spice the pork chops or spices them after cooking then the flavor of they chef's prized dinner is ruined and sometimes considered unacceptable!
These same concepts apply to functions and processes within the world of Dynamics CRM. There are functions that should be asynchronous, there are processes that need to be synchronous and knowing the difference is an important variable in any developer or power user.