I am currently trying to get a grip on async/await on javascript but having trouble understanding why 7 is not running at the end of everything. I know the culprit is calling the axios.get commands causing a delay but why are we not awaiting for them to finish to move on? I thought any await command pauses the event loop until the awaited function returns something.
Result:
0
1
before 2
1
before 2
7 - Writing to file ----------------------------------------------------------------------------------
(node:21116) UnhandledPromiseRejectionWarning: ReferenceError: result is not defined
    at processOrders (C:\Users\ReactFootwear\Desktop\Nodejs - Shopify Order System\app.js:30:5)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:21116) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:21116) [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.
2
3
2
3
4
5
6
My Code
const axios = require('axios').default;
const excel = require('exceljs');
const imageToBase64 = require('image-to-base64');
const fs = require('fs');
callShopifyOrdersApi();
// Get orders from shopify Api
async function callShopifyOrdersApi(){
  const url = 'https://shopifyurlhere.com/admin/api/2020-10/orders.json?created_at_min=2020-11-14'
  let responseData = await axios.get(url);
  processOrders(responseData.data.orders);
};
function processOrders(orders){
  console.log("Processing orders bitches");
  createWorkbook(orders).then(result => {
    console.log("7 - Writing to file ------------------------------------------------------------");
    var fileName = "Orders.xlsx";
    result.xlsx.writeFile(fileName).then(() => {
    });
  })
};
async function createWorkbook(orders){
    //Creating New Workbook 
    var workbook = new excel.Workbook();
    //Creating Sheet for that particular WorkBook
    var sheetName = 'Sheet1';
    var sheet = workbook.addWorksheet(sheetName);
    sheet.properties.defaultRowHeight = 200;
    //HEADER FORMAT
    sheet.columns = [ {key:"name", header:"name", width: 25}, {key: "address", header: "address"}];
    console.log("0")
    await compileRows(workbook, sheet, orders).then((workbook) => {return workbook})
  }
async function compileRows(workbook, sheet, orders){
  var rows = [];
  orders.forEach(async function (order) {
    order.line_items.forEach(async function (line_item, i) {
      var row = { name: order.customer.first_name , address: order.shipping_address.address1 }
      sheet.addRow(row);
    var img = await mainGetLineItemImg(line_item);
    
    console.log("3");
      if(i == 0){
 
        console.log("4");
        // add image to workbook by buffer
        const imageId2 = await workbook.addImage({
          buffer: fs.readFileSync('/Users/admin/Desktop/test.jpg'),
          extension: 'jpeg',
        });
        console.log("5");
        await sheet.addImage(imageId2, {
          tl: { col: 0, row: 3 },
          ext: { width: 180, height: 180 }
        });
        console.log("6");
      }
    });
  });
}
//GETTING IMAGE BASE 64
async function mainGetLineItemImg(line_item){
  console.log("1");
  var productId = line_item.product_id;
  var variantId = line_item.variant_id;
  console.log("before 2");
  const url = 'https://shopifyurlhere.com/admin/api/2020-10/variants/'+variantId+'.json';
  let responseData = await axios.get(url);
  var imageId = await responseData.data.variant.image_id;
  const url2 = 'https://shopifyurlhere.com/admin/api/2020-10/products/'+productId+'/images/'+imageId+'.json';
  let responseData2 = await axios.get(url2);
  var src = await responseData2.data.image.src;
  var base64code = await imageToBase64(src);
  console.log("2");
  return base64code;
}
 
    