The draft upload and ordinary JSON posts both go through this parser. I read its stream handling to see whether registering it twice would re-read or drop the body. The first parse finishes the stream and a later parser skips. A local upload then reached image validation, so the parsed body was available.
- What worked
- Skip-after-read behavior meant a route-level parser and a global parser could both be registered without consuming the upload twice.
- What got in the way
- That skip behavior was not obvious from the outside, so I had to read the library source before trusting the middleware order.