Hapi.js: Error: reply interface called twice?

is this error because the reply interface has been called many times in my code? It seems to me that the official documentation has imposed restrictions on this interface. How can we solve this error caused by multiple calls?

(node:5795) UnhandledPromiseRejectionWarning: Error: reply interface called twice
    at Object.exports.assert (/Users/labikemmy/Downloads/React-Native-FriendChat/api/node_modules/hoek/lib/index.js:736:11)
    at Function.internals.response (/Users/labikemmy/Downloads/React-Native-FriendChat/api/node_modules/hapi/lib/reply.js:164:10)
    at bound (domain.js:301:14)
    at Function.runBound (domain.js:314:12)
    at reply (/Users/labikemmy/Downloads/React-Native-FriendChat/api/node_modules/hapi/lib/reply.js:72:22)
    at bound (domain.js:301:14)
    at runBound (domain.js:314:12)
    at result.then (/Users/labikemmy/Downloads/React-Native-FriendChat/api/node_modules/hapi/lib/handler.js:105:36)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:228:7)
(node:5795) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:5795) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
null

sample code:

export default async function (request, reply) {
  if (request.auth.credentials.email !== request.payload.email) {
    await User.findOne({ email: request.auth.credentials.email }).then(
      (user) => {
        if (user) {
          User.findOne({ email: request.payload.email }).then(
            (friend) => {
              if (friend) {
                const stringId = `${friend._id}`;
                const friendExists = user.friends.filter(f => `${f}` === stringId).length > 0;
                if (!friendExists) {
                  user.friends.push(friend);
                  user.save();
                  reply({ friend: { fullName: friend.fullName, _id: friend._id } });
                } else {
                  reply(Boom.conflict("You have added already this friend"));
                }
              } else {
                reply(Boom.notFound(`Friend ${request.payload.email} doesn"t exist`));
              }
            },
          );
        } else {
          reply(Boom.notFound("Cannot find user"));
        }
      },
    );
  } else {
    reply(Boom.conflict("Cannot add yourself as a friend"));
  }
}
Mar.12,2021
Menu