| Think there will be two options.. 1) try to mess with our queue with variations for stuff you have mentioned above 2) treat this as separate problem and have some variation of RetryLink need to think deeply about it It all boils to:
- complexity of the entire link
- Maintainability
- introducing another corner cases
- Introducing bugs in form of data being lost
- Possibility that some things will be enqueued and reordered that can cause conflicts and data corruption
- User experience (I pressed send. I'm online - why I see this stupid progress bar for last 5 minutes)
while we enforce order of the operations with current link after introducing this we no longer will be able to get that
Drop from chat: even dropping retry link can lead to issues here. For example with case when you trying to retry stuff and create hangs there and you go offline and then edit will be enqueued.. " If mutation fails with network error (server unreachable), enqueue this mutation and try to forward it again." - this sounds exactly like RetryLink implementation how about problem with starving client by single mutation that will always fail network errors are really hard to detect.. It's hard to say what is the network error. Backend sending 500 is an networkError in terms of GraphQL errorhandler implementation I kinda think that your proposal is just and RetryLink that is backed up by storage. and it do not need to be really connected with OfflineLink I will just extend RetryLink to use our storage yeah.. but we overestimating amount of things that user needs to provide most of the syncs have no options whatsoever stuff just works with opinionated fashion.. main main worry is that we will overload offline link with amount of things we want to do there and concept of the link is that they should be really responsible for one thing and small and maintainable so you could add them like bash commands ls | grep "offline" > http plus we can do blue origin thing - "Step by step Ferociously" IMHO if you drop retry link into the game and starting to test entire thing we could see how this performs |