"use strict"; const pushBuffer = require("./"); function promiseDelay(time) { return new Promise((resolve, reject) => { setTimeout(resolve, time); }); } (async function () { let i = 0; let buffer = pushBuffer({ lanes: 2, pull: async () => promiseDelay(Math.random() * 50).then(() => i++), select: (value) => value % 2 }); for (let n = 0; n < 100; n++) { buffer.request(n % 2).then((value) => console.log(`[lane ${n % 2}] ${n} -> ${value}`)) await promiseDelay(Math.random() * 50); } })();