code: function updateRanges(resources, start, delays) {
      for(var i = 0, len = resources.length; i < len; i++) {
        var res = resources[i];
        if(res.range[1] > start) continue;
  
        if(res.subRanges) {
          updateRanges(res.subRanges, start, {});
          setEarliestSubRange(res);
        }
        else {
          res.range = rMap[res.id].next(start);
  
          if(res.id !== '_proj' && !delays[res.id]) {
            delays[res.id] = { needed: start, available: res.range[0] };
          }
        }
      }
    }
docs: Updates ranges after a failed reservation attempt. Resources that were not
  immediately available are captured in the delays array to be reported with
  the reservation.