def queue(request, obey_concurrency_limit = true)
return if assign_to_stub(request)
check_allow_net_connect!(request)
if @running_requests >= @max_concurrency && obey_concurrency_limit
@queued_requests << request
else
if request.method == :get
if @memoize_requests && @memoized_requests.has_key?(request.url)
if response = @retrieved_from_cache[request.url]
request.response = response
request.call_handlers
else
@memoized_requests[request.url] << request
end
else
@memoized_requests[request.url] = [] if @memoize_requests
get_from_cache_or_queue(request)
end
else
get_from_cache_or_queue(request)
end
end
end