              :request-method allowed}]
     :policy :reject}))
 
+(defn async-method-handler [type type-param allowed]
+  (wrap-access-rules
+   async-test-handler
+   {:rules [{type type-param
+             :handler ok
+             :request-method allowed}]
+    :policy :reject}))
+
 (deftest wrap-access-rules-method-test
   (let [allowed {:uri "/comments/1" :request-method :get}
         forbidden (assoc allowed :request-method :delete)]
 
     (testing "access rule pattern"
-      (let [method-handler (partial method-handler :pattern #"/comments/\d+")]
+      (let [method-handler (partial method-handler :pattern #"/comments/\d+")
+            async-method-handler (partial async-method-handler
+                                          :pattern #"/comments/\d+")]
 
         (testing "with keyword as allowed method"
           (let [handler (method-handler :get)]

    (let [req {:uri "/path1"}
          rsp (promise)
          ex  (promise)]
      (handler3 req rsp ex)
      (is (= {:uri "/path1"} (:body @rsp)))
      (is (not (realized? ex)))))


            (is (= (:body (handler allowed)) allowed))))

        (testing "async with nil as allowed request method"
          (let [handler (async-method-handler nil)
                rsp     (promise)
                ex      (promise)]
            (handler allowed rsp ex)
