The queued writes library provides AUTH and EXECUTE events, but I think it also needs a CANCEL event.
In my code, when I receive an AUTH event I obtain the data buffer using nrf_ble_qwr_value_get and process it to determine if it should be accepted or rejected. During this processing I set some internal variables and copy the data into a buffer for further processing on the EXECUTE event.
On the EXECUTE event I then process the stored buffer. To obtain the buffer with nrf_ble_qwr_value_get and process it again would be inefficient.
However, if the write has been rejected for one of the attributes then there is no event to notify my code handling the other attributes that the write has been cancelled so that my code can reset its internal state for those attributes.