My name is Paul. Recently I have shared our experience in using optimistic model approach for showing results to users immediately so they don’t need to wait for each operation to finish.
The idea behind that is pretty straightforward. When the user changes something in the application, the optimistic model gets the original object, tries to predict the potential result, then calls ViewController’s callback with this updated object, and then performs the actual operation in the background like the default Model.
Once the real result is returned from the server, the optimistic model calls callback with the real object, or in case of an error, the Model performs callback with the original object and then calls error callback. More details you can find in my article ‘Do Not Let Your User See Spinners‘ and in the presentation below.