I don't know "why" it works like this, but I can tell you what I've gleaned from experience:
- If the server responds 500 during a storage operation (create, update, destroy), the record is thrown into "error" state.
- I don't know of any way of getting out of error state. Maybe I'm missing something, but I've never seen it.
- Maybe it's because if the server responds 500, that's really an error and the application should error out.
But I don't really see a good way to hook that in -- the state machine doesn't fire any events unless the transition is valid ...
Short answer: fix that 500 :P
robert