mongoose findOneandUpdate running twice inside findOne

I am using async eachSeries and updating the document when it is present. Here is the sample code.

let a = [ 
 { user_name: "foo" } 
async.eachSeries(a, (doc, done) => {

    Foo.findOne(a).lean(true).exec((err, doc) => {

        if (err) return done(err);
        Foo.findOneAndUpdate(a, {
                user_last: "bar"
            }, {
                upsert: true,
                new: true
            (err, doc) => {
                if (err) return done(err);
                return done(doc);
}, (err) => {

sometime even the array a has one element , the findOneAndUpdate function is running twice in a single iteration. I am using node v6.10 and mongoose. It not happening all the time.

Is any one has encountered the similar problem.