I trying to figure out how to correct re-write my function using promises. The original working version is below:
this.accountsAPI.find(filter, function(err,result){
    if (err || 0 == result.length) {
      return res.status(400).json({error: "Can't find the account."});
    }
    var workRequest = req.query.workRequest;
    // result has some records and we assume that _id is unique, so it must have one entry in the array
    var newJob = { jobId: workRequest, acceptedById: result[0]._id, dateCreated: new Date() };
    this.jobsAPI.create( newJob, function(jobErr, jobResult) {
      if (jobErr) { return res.status(400).json({error: "Can't create a new job."}); }
      res.status(200).json({newJob});
    });
});
I have re-written this as:
return new Promise(function ( fulfill, reject) {
    this.accountsAPI.find(filter)
      .then(function (result) {
        if (0 == result.length) { return res.status(400).json({error: "Can't create a new job."}); }
        var workRequest = req.query.workRequest;
        // result has some records and we assume that _id is unique, so it must have one entry in the array
        var newJob = { workRequestId: workRequest, acceptedById: result[0]._id, dateCreated: new Date() };
        this.jobsAPI.create( newJob, function(jobErr, jobResult) {
          if (jobErr) { return res.status(400).json({error: "Can't create a new job."}); }
          res.status(200).json({newJob});
        })
      })
      .catch((err) => {
        return res.status(400).json({
        error: "Can't create a job.",
        errorDetail: err.message
      });
});
Not positive that I coded the promise version correctly. However, even if I did, there is still a chained asynchronous request, so my Promise version just makes things more complicated.
Should I use promises for such calls? Is there a way to rewrite my code elegantly?
 
     
    