One of the trickier parts of writing JS for the web is taming async code. Control flow abstractions for handling async JS exist but are commonly overlooked in engineering organizations, which can lead JS projects unknowingly into a labyrinth of
IIFEs, through the
pyramid of doom (
issue) and directly to
callback hell — making code brittle and prone to breakage.