Transaction rollback issue for more than one document insertion and update

i tried with below code

public async saveAndUpdateMaterial (req: Request, res: Response) {   

    const session = await mongoose.startSession()

    await session.startTransaction({

        readConcern: { level: 'snapshot' },

        writeConcern: { w: 'majority' }

      });

    

    try {  

        // (async function() {

         for await (var obj of req.body)  {

        var Material = new material(obj);

        await material.find( { materialNo : Material.materialNo})

        .then(  plans => {

            if(plans.length > 0)

            {

                 material.findOneAndUpdate(

                    { "_id": plans._id }, 

                    { $set: { description: Material.description , modifiedOn : new Date()}

                    })

                    .session(session).

                    exec(function(err, post) {

                    console.log(err);

                });

                console.log("update");

            }

            else

            {

                 material.create(Material, { session: session })

                .then(plans => {

                    console.log(plans);

                })

                .catch(err => {

                    console.log("err"+err);

                    // console.log(err);

                    // res.status(400).send({error:err});

                    // res.status(500).send({

                    //     message: err.message || "Some error occurred while retrieving notes."

                    // });

                    throw new Error("catch");

                });

            }

        });

    

        }

    // })();

    await console.log("commitTransaction");

    await session.commitTransaction()

    await session.endSession()

    res.status(200).send({status:"success"});

    } catch(err) {

        console.log("catch");

        await session.abortTransaction()

        await session.endSession()

        res.status(400).send({error:err});

        }

    }