     (validate-instance-from-pool! instance pool)))
 
 (schema/defn ^:always-validate
-  borrow-from-pool-with-timeout :- (schema/maybe PoolInstance)
+  borrow-from-pool-with-timeout :- (schema/maybe JRubyPuppetInstance)
   "Borrows a JRubyPuppet interpreter from the pool, like borrow-from-pool but a
   blocking timeout is provided. If an instance is available then it will be
   immediately returned to the caller, if not then this function will block

  be available to other callers) and throws the poison pill's exception.
  Otherwise returns the instance that was passed in."
  [instance pool]
  {:post [((some-fn nil? #(nil? (schema/check PoolInstance %))) %)]}
  (when (instance? PoisonPill instance)
    (.put pool instance)
    (throw (IllegalStateException. "Unable to borrow JRuby instance from pool"

  (.size (get-pool context)))

(schema/defn ^:always-validate
  borrow-from-pool :- JRubyPuppetInstance
  "Borrows a JRubyPuppet interpreter from the pool. If there are no instances
  left in the pool then this function will block until there is one available."
  [context :- PoolContext]
