Refactor request body streaming state handling
This patch was authored and released by @tanner0101.
- Implements new state machine for handling streaming request bodies (#2357).
This new state machine ensures that calls to
req.body.drain
will only ever happen after the previously returned future has completed. This makes it easier to correctly implement streaming file writes. Addresses https://forums.swift.org/t/how-to-use-nonblockingfileio-for-repeated-writes/36206.
This change ensures that streaming requests will be read completely even if a route ignores their body.