By splitting the processing and state querying into two separate functions, the result can be inspected multiple times without triggering the result processing.
The RWBackend now updates the internal state when a new write is done in addition to acknowledging it when the reply is complete.
This cleanly allows multiple modules to use it.