integrating futures into the hook system. if a hook callback(s) returns a future, then processing of the request waits for the returned future(s) to `finish` before continuing. this allows you to do async work within a hook while also guaranteeing that the hook will finish executing before the request is further processed. this could be useful for something like a :pre-route hook that checks user auth against a DB, letting a route run only when the DB has responded and the user info is saved into the request.