Experiencing possible asynchronous issue with dataset

Hi. This is either something ridiculously obvious that I’m missing (for which I apologize in advance), or there’s something going on in the background that I’m hoping someone will help me see.

In the code below,

$w.onReady(function () {
  $w("#dsCourses").onReady(() => {

        // Filter for Learn to Dive courses (groupSortOrder = "100")
        $w("#dsCourses").setFilter( wixData.filter()
        .eq("groupSortOrder", "100")
        );

            // Get group and course 1 description (on same row: item index 0)
            $w("#dsCourses").setCurrentItemIndex(0)
                .then(() => { 
                
                     // First, the Course Category, or group, Description
                     let currentItemL2D0 = $w("#dsCourses").getCurrentItem();
                     $w("#txtL2DDescription").text = currentItemL2D0["groupDescription"]; 
                      $w("#txtL2DDescription").text = groupDescription;                       
                     
                     // Now, COURSE 1 CALLOUT
                     $w("#txtSnorkelerCallout").text = currentItemL2D0["callout"];
                })
                .catch(error => { 
                    console.log(error, "--error") 
                });

            // Get COURSE 2 CALLOUT (item index 1) | 
            $w("#dsCourses").setCurrentItemIndex(1)
                .then(() => { 
                    let currentItemL2D1 = $w("#dsCourses").getCurrentItem();
                    $w("#txtDiscScubaCallout").text = currentItemL2D1["callout"];
                })
                .catch(error => { 
                    console.log(error, "--error") 
                });

            // Get COURSE 3 CALLOUT (item index 2)
            $w("#dsCourses").setCurrentItemIndex(2)
                .then(() => { 
                     let currentItemL2D2 = $w("#dsCourses").getCurrentItem();
                     $w("#txtOWDCallout").text = currentItemL2D2["callout"];
                })
                .catch(error => { 
                    console.log(error, "--error") 
                });
    });
});

If I comment out the code block “Get COURSE 3 CALLOUT…”, the callouts of courses 1 (Snorkeler) and 2 (Discover Scuba) are correct.

But when I include that code block, then the callout of course 2, which was displaying accurately before, now changes to the value of the callout of course 3!

Something asynchronous afoot somewhere? What am I doing wrong?

Thanks for your help!