node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »



Basically a forEachAsync that allows n async calls at once.

Another way to think of it is as a thread pool for JavaScript.

Say you have 500 http requests that you want to get done 10 at a time in batches of 400, 50, and 50 and you want to know when each batch (and all batches) have finished... lateral is your guy!

Node.js Installation

Node.JS (Server):

npm install lateral

Browser Installation

You can install from bower:

bower install lateral

Or download the raw file from


Or build with pakmanager:

pakmanager build lateral


;(function () {
  'use strict';
  var Lateral = window.Lateral || require('lateral').Lateral
    , maxCallsAtOnce = 4 // default 
    , lateral
  function onEach(complete, item, i) {
    setTimeout(function () {
    }, 500);
  lateral = Lateral.create(onEach, maxCallsAtOnce);
  lateral.add(['a', 'b', 'c', 'd']).then(function () {
    console.log('first batch done');
  lateral.add(['d', 'e', 'f', 'g']).then(function () {
    console.log('second batch done');
  lateral.then(function () {
    console.log('did all the things');


  • lateral = Lateral.create(fn, n)
    • create a Lateral that will execute fn on each item to do at most n things at once
  • lateral.add(arr).then(cb) - adds arr to be handled by fn and cb is called when all in arr are handled
  • lateral.then(callback)
    • Fires callback when all items in added arrays have been handled


The code is a little hairy and could use some cleaning.