When the data source itself has an outage, the run now says the account could not be read this time and asks you to try again, instead of reporting it as permanently unavailable. Some answers from the source are a real verdict about the account you sent — a bad handle, a private account, an account that no longer exists — and those are final, so the run says so and moves on. Everything else is the source having a bad moment: rate limiting, a server error, a dropped line, or the source's own origin being unreachable. Until this build the run had a fixed list of the moments it recognised as temporary, and anything not on that list was reported as final. On 22 September the source's origin went down for about half an hour and answered with a code that was not on that list, so accounts it had served fifteen minutes earlier came back marked permanently unavailable. That is now the other way round: only the answers that are genuinely a verdict about your account are final, and anything else is treated as temporary, is not charged, and asks you to run it again. Final answers behave exactly as they did. Nothing changes about what is delivered, which rows are charged, the price, the input fields or the output columns.
A run's saved position in a list now survives many runs of this actor going at once on the same account. This actor remembers how far down a list your account has already walked, so a later run asking for more can carry on from there instead of paying for pages you already hold. That note was saved by writing the whole record back at the end of a run — which is fine one run at a time, and wrong when a burst of runs starts together: every one of them read the record as it stood at its own start, so the last one to finish overwrote the rest and only its own list kept a position. Measured here with fifteen runs in flight: fifteen positions were saved and one survived. A run now re-reads the record just before saving and folds its own note into whatever is there, keeping the deeper position for any list two runs both walked, and keeping the fresher answer for a list known to have ended. All fifteen survive. A list you have just proved has moved on still forgets its old position, exactly as before. Nothing changes about what is delivered, which rows are charged, the price, the input fields or the output columns.
An answer the data source has never sent before now counts as an outage rather than as something we paid for. The run keeps its own record of which of the source's answers cost us money, and until this build that record was a fixed list — so a response nobody had listed, such as a code the source first sent during an outage, was read as one we had bought. Now only the answers the source actually bills count as bought; everything else is booked at nothing and simply tried again. Nothing changes about what is delivered, what you are charged, the price, the input fields or the output columns.