      :friends {:prim-kvs [{:catagory \"favorites\" :id [1 2 3]}
                           {:catagory \"recent\"    :id [7 8 9]}]}})
 
-  :max-reqs allows a number of requests to automatically be stitched together
-  (to exceed throughput limits, for example)."
-  [creds requests & [{:keys [return-cc? max-reqs] :as opts
-                      :or   {max-reqs 5}}]]
+  :span-reqs - {:max _ :throttle-ms _} allows a number of requests to
+  automatically be stitched together (to exceed throughput limits, for example)."
+  [creds requests & [{:keys [return-cc? span-reqs] :as opts
+                      :or   {span-reqs {:max 5}}}]]
   (letfn [(run1 [raw-req]
             (as-map
              (.batchGetItem (db-client creds)
                (doto-maybe (BatchGetItemRequest.) g ; {table-str KeysAndAttributes}
                  :always    (.setRequestItems raw-req)
                  return-cc? (.setReturnConsumedCapacity (utils/enum :total))))))]
-    (merge-more run1 max-reqs (run1 (batch-request-items requests)))))
+    (merge-more run1 span-reqs (run1 (batch-request-items requests)))))
 
 (comment
   (def bigval (.getBytes (apply str (range 14000))))


  Ref. http://goo.gl/XfGKW for query+scan best practices."
  [creds table
   & [{:keys [attr-conds last-prim-kvs max-reqs return limit total-segments
              segment return-cc?] :as opts
       :or   {max-reqs 5}}]]
  (letfn [(run1 [last-prim-kvs]
            (as-map
             (.scan (db-client creds)


  Returns a promise to which the final resulting table description will be
  delivered. Deref this promise to block until update (all steps) complete."
  [creds table throughput & [{:keys [span-reqs]
                              :or   {span-reqs {:max 5}}}]]
  (let [{max-reqs :max} span-reqs
        {read* :read write* :write} throughput
        {:keys [status throughput]} (describe-table creds table)
        {:keys [read write num-decreases-today]} throughput

