I'm trying to call a promise function recursively.
The following call service.getSentenceFragment() returns upto 5 letters from a sentence i.e. 'hello' from 'helloworld. Providing a nextToken value as a parameter to the call returns the next 5 letters in the sequence. i.e. 'world'. The following code returns 'hellohelloworldworld' and does not log to the console.
var sentence = '';
getSentence().then(function (data)) {
    console.log(sentence);
});
function getSentence(nextToken) {
    return new Promise((resolve, reject) => {
        getSentenceFragment(nextToken).then(function(data) {
            sentence += data.fragment;
            if (data.nextToken != null && data.nextToken != 'undefined') {
                getSentence(data.NextToken);
            } else {
                resolve();
            }
        }).catch(function (reason) {
            reject(reason);
        });
    });
}
function getSentenceFragment(nextToken) {
    return new Promise((resolve, reject) => {
        service.getSentenceFragment({ NextToken: nextToken }, function (error, data) {
            if (data) {
                if (data.length !== 0) {
                    resolve(data);
                }
            } else {
                reject(error);
            }
        });
    });
}
 
     
     
    