جاوا اسکریپت زبانی تکرشتهای است، به این معنا که تنها یک کار را در یک زمان میتواند انجام دهد. این ویژگی میتواند منجر به مشکلاتی در مدیریت عملیات ناهمگام (asynchronous operations) شود؛ عملیاتی که زمانبر هستند و نمیتوانند فوراً نتیجه را برگردانند، مانند درخواستهای شبکه، دسترسی به پایگاه داده، یا خواندن و نوشتن فایل. در گذشته، برای مدیریت اینگونه عملیات از Callback و Promise استفاده میشد. اما با معرفی async و await در ES2017، جاوا اسکریپت ابزارهای قدرتمندتری برای نوشتن کدهای ناهمگام به روشی خواناتر و مشابه کدهای همگام (synchronous) فراهم کرد.