It should be possible to handle metadata on a per-handler basis, and we should not enforce that metadata is handled completely before the server does any reads.
Instead, we should just have the handler send back metadata, or send empty metadata automatically if it doesn't.