async function allocateAndWait() {
  let data = [];
  for (let i = 0; i < 100; i = i + 1) {
    data.push({ value: 'test ' + i });
  }

  console.log('Before await, data length:', data.length);
  await new Promise(resolve => setTimeout(resolve, 10));

  console.log('After await+GC, data length:', data.length);
  return data.length;
}

async function main() {
  for (let i = 0; i < 3; i = i + 1) {
    console.log('Cycle', i + 1);
    let result = await allocateAndWait();
    console.log('Result:', result);
  }
  console.log('Done');
}

main().then(() => {
  console.log('=== async done, calling gc ===');
});
