Turns out we can use `AppResource` so long as we make sure `AppResource.dehydrate` can handle `request == None`.