Wraps promise so that it's not called again until it's resolved
throttleWrapper = (promiseTarget, args...) ->
isLoading = false
promiseToServe = null
return ->
return promiseToServe if isLoading
isLoading = true
promiseToServe = promiseTarget.apply promiseTarget, args...
promiseToServe.then (promiseResolved) ->
isLoading = false
promiseResolved