Anyone who says JavaScript is 'easy' has never actually tried to debug a complex async operation