Promise to retrieve Timeline

Using Parse.com for few months now, I started to create some Cloud Function To let me create and retrieve some element in a TimeLine

I need to get my information from timeline's class and once I retrieve elements, I have to call getStat to add in the same object Widgets both information from my query and from the results from getStat.

I have tried to use Promise to achieve this, but not sure it was the best way to deal with it. Any suggestions / help ?

Parse.Cloud.define("getTimeline", function(request, response) {
    var user = request.params.user;
    var limit = request.params.limit;
    var page = request.params.page;

    if (limit === undefined) limit = 10;
    if (page === undefined) page = 0;

    var Timeline = Parse.Object.extend("timeline");
    var query = new Parse.Query(Timeline);
    query.equalTo("user", user);
    query.descending('createdAt');
    query.limit(limit);
    query.skip(page * limit);
    var Widgets = {};

    query.find().then(function(results) {
        var promise = Parse.Promise.as();
        _.each(results, function(result) {
            var Widget = new Object();
            Widget.data = result;
            var timeline_id = result.get('timeline_id');
            promise = promise.then(function() {
                return Parse.Cloud.run('getStats', {
                    'timeline_id': timeline_id
                }).then(function(stat) {
                    Widget.stat = stat;
                    Widgets[timeline_id] = Widget;
                });
            });
        });
        return promise;
    }).then(function() {
            response.success(Widgets);
        },
        function(error) {
            response.error("Error: " + error.code + " " + error.message);
        });
});