Ah, I see. Looks like we have another requirement we're trying to satisfy: Keep low-level API unaware of high-level API. :) Otherwise we get a complicated tangled dependency graph and tightly coupled code all around.

What do we need from the request object? Why can't we pass just that part?