           :created-at (:created-at original-resource)
           :updated-at timestamp})
         update (pool/with-pool [conn pool/rethinkdb-pool]
-                 (-> (r/table table-name)
-                     (r/get (original-resource primary-key-name))
-                     (r/replace timed-resource)
-                     (r/run conn)))]
+                 (with-timeout default-timeout
+                   (-> (r/table table-name)
+                       (r/get (original-resource primary-key-name))
+                       (r/replace timed-resource)
+                       (r/run conn))))]
   (if (or (= 1 (:replaced update)) (= 1 (:unchanged update)))
     timed-resource
     (throw (RuntimeException. (str "RethinkDB update failure: " update)))))))

  "Delete the specified resource and return `true`."
  ([table-name primary-key-value]
   (let [delete (pool/with-pool [conn pool/rethinkdb-pool]
                  (-> (r/table table-name)
                      (r/get primary-key-value)
                      (r/delete)
                      (r/run conn)))]
    (if (= 1 (:deleted delete))
      true
      (throw (RuntimeException. (str "RethinkDB delete failure: " delete))))))

  ([table-name key-name key-value]
   (let [delete (pool/with-pool [conn pool/rethinkdb-pool]
                  (-> (r/table table-name)
                      (r/get-all [key-value] {:index key-name})
                      (r/delete)
                      (r/run conn)))]
     (if (zero? (:errors delete))
      true
      (throw (RuntimeException. (str "RethinkDB delete failure: " delete)))))))

  "
  ([table-name fields]
  (pool/with-pool [conn pool/rethinkdb-pool]
    (with-timeout default-timeout
      (-> (r/table table-name)
          (r/with-fields fields)
          (r/run conn)))))

  ([table-name index-name index-value]
  (pool/with-pool [conn pool/rethinkdb-pool]
    (with-timeout default-timeout
      (-> (r/table table-name)
          (r/get-all [index-value] {:index index-name})
          (r/run conn)))))

  ([table-name index-name index-value fields]
  (pool/with-pool [conn pool/rethinkdb-pool]
    (with-timeout default-timeout
      (-> (r/table table-name)
          (r/get-all [index-value] {:index index-name})
          (r/pluck fields)
          (r/run conn))))))

(defn update-resource
  "Given a table name, the name of the primary key, and the original and updated resource,
