   member represents one timing category from the request. So, if you're querying a JSON API that
   surfaces a bit of timing information in the response, you might query that JSON and generate a
   vector from the information you find there in your handler."
-  [url number-of-requests pause-between-requests handler]
+  [request-invoker number-of-requests pause-between-requests handler]
   (let [request-indicies (range number-of-requests)
         request-delays (map #(* % pause-between-requests) request-indicies)
-        request-futures (map #(issue-timed-request url % handler) request-delays)
+        request-futures (map #(issue-timed-request request-invoker % handler) request-delays)
         result-timings (map #(deref %) request-futures)
         grouped-result-categories (partition (count result-timings) (apply interleave result-timings))
         average-timing-per-category (map #(-> % (average) (str "ms")) grouped-result-categories)]

                                                    nil])]
        (println (str "Running a load test of " url))
        (println (str requests " requests spread over " seconds " seconds."))
        (if custom-handler-name (println (str "Using custom handler: " custom-handler-name)))
        (println "")
        (load-test-url url requests pause-between-requests parsed-handler)
        (System/exit 0)))))

  (:import [java.io PushbackReader])
  (:require [clj-http.client :as client]
            [clojure.tools.cli :refer [parse-opts]]
            [clojure.java.io :as io]
            [clojure.string :refer [split]])
  (:gen-class))

(defn- basic-handler
