An example I like to use in these situations.
Synchronous functions work like this. You tell your wife you're going out and you'll do some shopping, hand her a blank piece of paper and tell her to write down the stuff she wants you to buy. You wait till she writes it down, then go to the store.
Asynchronous functions work like this. You tell your wife you're going out and you'll do some shopping, hand her a blank piece of paper, tell her to write down the stuff she wants you to buy, and when she's done, to give you the paper and tell you to go to the store; you'll be awaiting her instructions. Then you forget about it and start reading your evening paper.
Using asynchronous functions without understanding what you do, like you did in the original post, you did something like this. You tell your wife you're going out and you'll do some shopping, hand her a blank piece of paper, tell her to write down the stuff she wants you to buy, and when she's done, to give you the paper and tell you to go to the store. You then immediately go to the store, and get confused when you can't find your wife's paper on you. You go home, and proceed to read the evening paper. Your wife then gives you her list and tries to tell you to go to the store, but you ignore her, thinking your job is done.