title: Avoiding callback hell in nodeJs / Passing variables to inner functions
body: <p>Here's an example of something I'd like to simplify:</p>
  
  <pre><code>exports.generateUrl = function (req, res) {
      var id = req.query.someParameter;
  
      var query = MyMongooseModel.findOne({'id': id});
      query.exec(function (err, mongooseModel) {
          if(err) {
              //deal with it
          }
  
          if (!mongooseModel) {
              generateUrl(Id,
                  function (err, text, url) {
                      if (err) {
                          res.status(HttpStatus.INTERNAL_SERVER_ERROR).send(err);
                          return;
                      }
                      var newMongooseModel = new AnotherMongooseModel();
                      newMongooseModel.id = id;
  
                      newMongooseModel.save(function (err) {
                          if (err) {
                              res.status(HttpStatus.INTERNAL_SERVER_ERROR).send(err);
                          } else {
                              res.send({url: url, text: text});
                          }
                      });
                  });
          } else {
              //deal with already exists
          }
      });
  };
  </code></pre>
  
  <p>I've seen other SO answer where they tell you to use named functions, but don't say how to deal with variable you want to pass in or use jQuery's queue. I do not have the luxury of either.</p>
  
  <p>I understand that I can replace my anonymous functions with names functions, but then I would need to pass arounds variables. How would my inner function access <code>res</code> for instance if the function is defined elsewhere?</p>