var listUrl = "https://<TENANT>.sharepoint.com/sites/site/_api/<SITE>/lists/getByTitle('<LIST>')"
var url = `${listUrl}/items?$top=5000`;
var fetchOptions = { headers: { "Accept": "application/json;odata=nometadata" } };
var response = await fetch(url, fetchOptions);
var data = await response.json();
var items = data.value;
var commentsPromises = items.map(async item => {
    var commentsUrl = `${listUrl}/items(${item.Id})/Comments()`;
    var commentsResponse = await fetch(commentsUrl, fetchOptions);
    if (commentsResponse.ok) {
        var commentsData = await commentsResponse.json();
        item.Comments = commentsData.value;
    } else {
        item.Comments = [];
    }
});
await Promise.all(commentsPromises);
console.log(items);