nodejs – Transformar función de API a asíncrona

Estoy desarrollando una API en NodeJS con Express y ahora que termine todas las funciones y está todo OK quiero hacer que sea asíncrono.

En este momento el flujo es así:

Tengo una carpeta routes donde por ejemplo hay un archivo llamado productRoute.js, este archivo tiene una función como esta:

const { getProducts } = require('../services/productService');

app.get('/producto', function(req, res) {
        getProducts(req, res);
    })

De acá va al servicio de productos, en la carpeta services dentro de archivo llamado productService.js y a la siguiente función:

let getProducts = (req, res) => {
    let pagina = Number(req.query.pagina) || 1;
    let cantidad = Number(req.query.cantidad) || 10;
    let query = { estado: true };
    let { codigo, descripcion, nombre } = req.query;
    if ( codigo ) { query.codigo = new RegExp(codigo, "i") };
    if ( nombre ) { query.nombre = new RegExp(nombre, "i") };
    Producto.find(query, '_id codigo descripcion nombre precioCosto precioVenta categoria marca estado imagenBase64')
        .sort({nombre: 'asc'})
        .populate('categoria', '_id nombre')
        .populate('marca', '_id nombre')
        .skip((pagina * cantidad) - cantidad)
        .limit(cantidad)
        .exec((err, productos) => {
            if (err) {
                return res.status(500).json({
                    ok: false,
                    error: 'Error interno en el servidor'
                });
            }
            if (!productos) {
                return res.status(400).json({
                    ok: false,
                    error: {
                        message: 'No se encontraron productos.'
                    }
                });
            }

            res.json({
                ok: true,
                cantidad: productos.length,
                entidadResultante: productos
            });
        })
}

Ahora tengo entendido que mis funciones (hay muchos mas y todos de la misma forma), no son asíncronas ya que no estoy utilizando async/await, como podría pasar estas funciones a asíncronas? Hay alguna librería que me ayude en esto?

Gracias!