https://rawb.codeplex.com/SourceControl/latest#Rawb/Rawb/js/rawb.util.js

rawb.nonOverlappingAsync(async, throttle)

Construct an asynchronous function taking pass/fail callbacks
such that only the last in any sequence of overlapping
calls is processed.

To be more precise, if g = rawb.nonOverlappingAsync(f, n) then
calling g(x, pass, fail) will have the following behaviour:
Parameters

async: function(arg, pass, fail)

An asynchronous function (typically an AJAX request) taking an
argument arg and pass and fail callbacks. If the call
succeeds, async should call pass with the response; if the
call fails, async should call fail with the reason.

throttle: number
Optional (default 0).

The number of milliseconds to defer calling async. If this
argument is omitted or is not a positive number, then async
is called immediately.