Well, maybe I look at this from the wrong direction. Every value in the resource map should be a function that accepts the context as an argument. I wonder why the implementation in master does not invoke the callback as follows:

```clojure
 (defn build-allow-header [resource ctx]
  (clojure.string/join ", " (map (comp clojure.string/upper-case name) ((:allowed-methods resource) ctx))))
```

As I see in master, this is a shortcoming. So the plan is to streamline the invocation of callback functions that are defined in the resource map.

Maybe is is a good idea to step back from converting every callback value to a function and use a dedicated function to lookup a value from the resource:

```clojure
(defn lookup-in-resource [resource key context]
  (let [v (get resource key)]
    (if (fn? v)
      (v context)
      v))))
```

This will force every callsite to be aware that the resource map values can be functions