Exception in async function: Only on server, not on localhost


#1

Hey everyone,

I am trying to get a route working that will function as a “Thank You” page for people who buy our products on an external store. On localhost everything works fine but on our staging server I get the following exception:

Exception in callback of async function: action@http://taskwunderstaging-45398.onmodulus.net/12289f8cf999b67e6c6c6dcad1a5a5eded53f4e2.js:517:468

Does anyone have an idea what might be causing this?

The code in question is as follows:
The Iron Router Endpoint

Router.route('/signup-partner', {
  name: 'signupPartner',
  where: 'client',
  waitOn: function(){
    return Meteor.subscribe("packages");
  },
  action: function() {
  Meteor.logout(function() {});
  var query = this.params.query;


  //@TODO verify the query with the sha key!

  var userInfo = {
    email:query.email,
    firstname:query.firstname,
    lastname:query.lastname,
  };

  var companyInfo = {
      companyName:query.company,
      street:query.street,
      city:query.city,
      zipcode:query.zipcode,
      country:query.country,
      taxId:query.taxid
    };

  var orderInfo = {
    product:query.product,
    order:query.order,
  };

  // get the package from the database
  orderInfo.package = Packages.findOne({digistoreId:orderInfo.product}).name;
  orderInfo.tw_id = Packages.findOne({digistoreId:orderInfo.product})._id;


  var data = {
    userInfo:userInfo,
    companyInfo:companyInfo,
    orderInfo:orderInfo,
  };

  var that = this;
  // check if the user account already exists and if so add the package and login the user
  Meteor.call("partnerUserExists", data.userInfo.email,{orderId:data.orderInfo.order,tw_id:data.orderInfo.tw_id}, function(error, result){
    if(result === "not-found"){
      that.render('signup_partner',{
        data: function(){
          return data;
        }
      });
    }
    else {
      Session.set('boughtPackage',result);
      that.redirect('login');
    }
  });


  }
});

the method that this route calls is as follows:

  partnerUserExists: function(email,orderIds){
    var user = Meteor.users.findOne({"emails.address":email}) || false;
    console.log(user);
    if(!user){
      return "not-found";
    }

    if(_.indexOf(user.data.digistoreOrders,orderIds.orderId) > -1){
      return orderIds.tw_id;
    }

    (function(callback){
      // add the paidTask array if it doesnt exist
      if (!user.data.paidTasks){
          Meteor.users.update({_id:user._id},{$set:{"data.paidTasks":[]}});
      }

      // add the digistore array if it doesnt exist
      if (!user.data.digistoreOrders){
          Meteor.users.update({_id:user._id},{$set:{"data.digistoreOrders":[]}});
      }
      callback();
    })(function(){
      Meteor.users.update({_id:user._id},{$push:{"data.digistoreOrders":orderIds.orderId}});
      Meteor.users.update({_id:user._id},{$push:{"data.paidTasks":orderIds.tw_id}});

      return orderIds.tw_id;
    });


  }