export function buzz(services) { const _bus = []; const _services = []; const broadcast = type => data => { _bus.push({ type, data }); } setupServices(broadcast); requestAnimationFrame(run); function setupServices(broadcast) { for (const service of services) { _services.push(service(broadcast)) } } function run(time) { requestAnimationFrame(run); for (const message of _bus.splice(0, 100)) { for (const service of _services) { if (typeof service === 'function') { service(message); } } } } }