function pool(alloc, slice, size) {
    var SIZE   = size || 8192;
    var MAX    = SIZE >>> 1;
    var slab   = null;
    var offset = SIZE;
    return function pool_alloc(size) {
        if (size < 1 || size > MAX)
            return alloc(size);
        if (offset + size > SIZE) {
            slab = alloc(SIZE);
            offset = 0;
        }
        var buf = slice.call(slab, offset, offset += size);
        if (offset & 7) // align to 32 bit
            offset = (offset | 7) + 1;
        return buf;
    };
}
A general purpose buffer pool.
@memberof util
@function
@param {PoolAllocator} alloc Allocator
@param {PoolSlicer} slice Slicer
@param {number} [size=8192] Slab size
@returns {PoolAllocator} Pooled allocator