We can make decisions when to use non-blocking stack and blocking stack by following params
Suppose I have to fetch data from my collection and send it to the user, so my response should be sent after getting data, in this case, we need to use blocking stack.
Suppose I need to update 10 data those are independent but I need to send update status of each data to the user. Now here we will use bot mix of the non-blocking stack and blocking stack. For updation of 10 data, we going to use non-blocking stack and we use blocking stack to send the response until all data are not updated (Promise.all).
Suppose I need to send email to my user but I don't have any task related to whether mail is sent or not it is independent, in this case, we can use non-blocking state. Here we simply sent mail and informed the user that we sent.