In parse I have this crazy query where I'm querying on table1 to get an object.

Then querying table2 on a pointer column that matches table1's result for all users that match that.

Next I need to create an object and then create another object using the result of that first object.

Finally save the final object into the users from table2's query.

I'm having an issue chaining everything and for some reason my success message returns before the user objects are saved. 

```
Parse.Cloud.define('startChain', (req, res) => {

let q1 = new Parse.Query("Table1");

q1.equalTo("objectId", req.params.q1ID);
q1.equalTo("user", req.user);
q1.include("user");

q1.get(req.params.q1ID)
.then(post => {
  post.get("user")
  .then(user => {
   // Query on q1
   let q2 = new Parse.Query("Table2");
   q2.equalTo("t1Object", post);
   w2.include("user2");
   q2.include("pointer2Object");
   q2.find();
 })
 .then(users => {
  var morePromises = users.map(aUser => {
    let newObject = new Parse.Object.Extend("Table3");
    newObject.set("user", aUser);
    newObject.set("table1Pointer", post);
    newObject.save()
    .then(result => {
      var object2 = new Parse.Object.Extend("Table4");
      object2.set("column1", aUser);
      object2.set("column2", result);
      var object3 = new Parse.Object.Extend("Table5");
      object2.save()
      .then(o2 => {
        object3.set('column', 'o2');
        object3.save()
        .then(o3 => {
          aUser.set("o3", o3);
          return aUser.save(null, {useMasterKey: true});
        });
      });
    });
  });
  Promise.all(morePromises)
  .then(result => res.success());
})
.catch(err => {
 res.error(err.message);
});
});
});

```