Skip to content

Practical Async/Await

"I am so stuck with asynchronous JavaScript. I don't know what else to do... Please help!"

You're calling an async function and log the result:


Not the dreaded undefined! 😭

You just want to get the value from a callback function, why does it have to be so hard?

After reading StackOverflow posts and watching YouTube videos all day long, you're just as lost as when you started..

If you see one more tutorial using setTimeout you're gonna throw your keyboard out the window. 🤬

You're awaiting the function and you've added the async keyword, what else is there to it?

It feels like you're missing something..

You know the difference between synchronous and asynchronous functions, you just can't put this knowledge into practice.

Everyone says async/await is syntactic sugar for promises, but you've never been able to put the two together. You'd rather just stick to using promises.

It feels embarrassing to not understand async/await when you've been using JavaScript for all these months (or years!).

You know writing asynchronous code with async/await can be straightforward, you've seen others do it, you just don't think YOU can do it.

But what if you could?

What if you had a solid grasp on async/await fundamentals?

You would rest assured knowing that you always have access to any value that's returned asynchronously.

Imagine being able to spot and fix async mistakes just by glancing at the code. You could make callbacks work flawlessly together with async/await if you needed to. ✨

You'd write modern asynchronous code that just works — finally. Not next month, or next week, but today.

It's true, using async/await is unintuitive and difficult at first.. but it doesn't have to be.

Get really good at writing asynchronous JavaScript with practical screencasts

We'll go over the common pitfalls of using async/await and how to avoid them. We'll use practical examples from real apps so you can apply what you've learned straight away in your projects.

You'll discover new ways of reasoning about asynchronous code, and you'll unlearn old thinking patterns that were getting in your way.

You'll learn why async/await excels at asynchronous JavaScript. You'll wonder how you've managed to live without it. 🤩

Here's what you'll learn:

  • how to think like the JavaScript runtime when you encounter the async & await keywords
  • how async/await is just promises under the hood
  • make any callback you encounter work nicely with async/await
  • evaluate if your favorite library is compatible with async/await
  • run asynchronous tasks in parallel with a concurrency limit
  • build & structure complex asynchronous flows
  • time-out and cancel async operations
  • and much more..
“The visual explanations really clicked it for me! You don't just stop at the solution, you go a step further and show other approaches and why they are not as good.

Even though my day job is mostly Java/Kotlin, this course has been tremendously useful!”
Profile picture of Tomasz Matusik Tomasz Matusik Android Developer

What will you get?

The course consists of 16 video lessons split between 2 modules. Additionally, you'll get 3 bonus materials.

I know you're busy so I made sure that every video second will be worth your time. Literally.

From designing the education materials to editing the videos, each lesson is focused and concise. I won't waste your precious time on irrelevant tangential topics.

Nobody wants to watch 5+ hours of videos. In only 1h 10m you'll learn everything you need to know about async/await. This won’t be yet another Udemy course you buy and don’t finish.

Module #1
Async/Await Fundamentals
Video screenshot of lesson 1 #1
What does the async keyword do?
Video screenshot of lesson 2 #2
How and when to use await
Video screenshot of lesson 3 #3
What is syntax sugar?
Video screenshot of lesson 4 #4 Preview
Why async/await is better than Promise.then
Video screenshot of lesson 5 #5
Make callbacks work with async/await
Video screenshot of lesson 6 #6
Evaluate if a library is compatible with async/await
Video screenshot of lesson 7 #7
It's async all the way up
Video screenshot of lesson 8 #8
Async/await inside forEach
Module #2
Advanced Asynchronous JavaScript
Video screenshot of lesson 9 #9
Run parallel tasks with a concurrency limit
Video screenshot of lesson 10 #10
Run complex asynchronous flows
Video screenshot of lesson 11 #11
Promise.all vs Promise.allSettled
Video screenshot of lesson 12 #12
Implement timeouts with Promise.race
Video screenshot of lesson 13 #13
Cancel asynchronous operations
Video screenshot of lesson 14 #14
Cache asynchronous values
Video screenshot of lesson 15 #15
Use one time events with async/await
Video screenshot of lesson 16 #16
Transform events to async iterators
“This course is really awesome! The content is high quality, well structured and I've learned a lot. Now I feel confident working with asynchronous programming.”
Profile picture of Omar Abdelaziz Omar Abdelaziz Computer Science Student

Who is this for?

This is for you if..

  • You want a solid grasp of async/await fundamentals
  • You're using promises (or callbacks) because you're not comfortable with async/await
  • You're coming from a synchronous language (PHP, Ruby, Python, Java, etc.) and struggle with asynchronous JavaScript
  • You easily get overwhelmed when several new topics are introduced at the same time
  • You prefer learning from real-world examples rather than dummy code

This is not for you if..

  • You're not familiar with basic JavaScript (loops, conditionals, imports, arrow functions)
  • You don't care about learning JavaScript fundamentals
  • You haven't run a Node.js program before and expect a frontend focused learning approach
  • You prefer learning from books instead of watching videos
“Although I was already using async/await, there were spots where, despite getting the correct results, some inner workings were a bit unclear for me. Reading your explanation cleared these spots for me.”
Profile picture of Robertino Vasilescu Robertino Vasilescu Fullstack Node.js Developer

Learn Async/Await

Don't wait to master async/await any longer. Get Practical Async Await and write modern asynchronous JavaScript that just works — today!

  • 1 module and 2 bonuses
  • All code examples, before & after each lesson
  • Stream on any device
  • Lifetime updates & access
  • Money back guarantee
  • Async/Await Fundamentals
  • Bonus: Refactoring Callbacks Guide
  • Bonus: ESLint configuration with 14 async-specific rules
  • 2 modules and 3 bonuses
  • All code examples, before & after each lesson
  • Stream on any device
  • Lifetime updates & access
  • Money back guarantee
  • Async/Await Fundamentals
  • Advanced Asynchronous JavaScript
  • Bonus: Refactoring Callbacks Guide
  • Bonus: ESLint configuration with 14 async-specific rules
  • Bonus: Best practices for writing asynchronous code
  • Everything from Pro
  • A personalised 1-on-1 consultation with me where we focus on your situation and fill the gaps in your knowledge. You'll get the opportunity to ask me questions, and I will review and give actionable feedback on your code

Team licenses

Train several developers at your organization with a team license. You'll receive a discount if you buy at least 4 licenses. Team licenses include everything in the Pro package above.

Send me an email with the number of licenses you wish to purchase and I'll send you a discount link.

Meet your instructor

A picture of me on a sunny day in Brazil

I am Maxim Orlov, and for the last 7 years I've been using JavaScript professionally.

When I started learning programming, and well after, I struggled to wrap my head around asynchronous JavaScript. Back then, async/await didn't exist and promises were not yet part of the language. The JS community used libraries like Bluebird and Q, which had their own implementation of promises.

Needless to say, writing asynchronous code in JavaScript has gotten a lot better over the years. I've witnessed first-hand how the community evolved from using callbacks, to promises and finally async/await. I've had to refactor codebases after each of these stages, and I've learned the hard way what some of the best (and bad!) practices are around asynchronous code.

This course is a culmination of my experience, and I think it will be tremendously useful to you. I'm excited to help you become a better JavaScript developer!


If I buy a lower tier now, can I upgrade later?

Absolutely! You can upgrade at any time to a higher tier. You will pay only for the difference between what you've paid originally and the current cost of the higher tier.

Is this a subscription? Does the license expire?

Nope! You pay once and get access to the course forever. Moreover, you'll get future updates and improvements for free.

Can I purchase multiple licenses, for my team or group?

Yes, and you will get a discount if you purchase at least 4 licenses.

Send me an email with the number of licenses you wish to purchase and I'll send you a discount link. Team licenses include everything in the Pro package.

What if I don't like the course? Can I get a refund?

I want to make sure you get real value out of this. If you're not happy with the course, contact me through the course platform within 30 days and I'll give you a full refund.

I have another question!

Sure! You can reach out to me at