The pessimistic approach is what I'll recommend... You mentioned server speed, that should be figured out and maintain the pessimistic approach.. together with a good UX makes it the best way to handle operations.
Nice one!
Yeah, I'll also go with the pessimistic approach too, cause the optimistic approach affects the UI, when I tried it out and the server failed the UI blinked (I.e as the state changed and returned back to it's initial value) for some seconds which is not good UX. Thank you for your the comment.