TODO high middleware revisit (how to initialize?) medium what about async request? yield callback? coroutine? dependency? low test utility