Chaining findOneAndUpdate vs awaits

Hi. I was wondering if there is a difference in performace or which one would be considered a better way of doing 3 queries:

 User.findOneAndUpdate(
      { _id: req.user },
      { $push: { friends: newFriend } },
      (err) => {
        if (err) return res.status(400).json(err);
        User.findOneAndUpdate(
          { _id: newFriend },
          { $push: { friends: req.user } },
          (err) => {
            if (err) return res.status(400).json(err);
            FriendRequest.findOneAndDelete(
              { $and: [{ to: req.user }, { from: newFriend }] },
              (err, response) => {
                if (err) return res.status(400).json(err);
                res.json(response);
              }
            );
          }
        );
      }
    );

or:

 await User.findOneAndUpdate(
      { _id: req.user },
      { $push: { friends: newFriend } }
    );
    await User.findOneAndUpdate(
      { _id: newFriend },
      { $push: { friends: req.user } }
    );
const deletedRequest = await FriendRequest.findOneAndDelete({
  $and: [{ to: req.user }, { from: newFriend }],
});

res.json(deletedRequest);

Hi @Mark_t1 ,

I think this is more of a js question.

I assume there should not be much difference as the delete will only happen once both prior operations completely finished.

So for me the readability of the second option is more charming

Thanks
Pavel