{"record":{"id":"3ddecc820754aca9","repo":"JustArchiNET/ArchiSteamFarm","slug":"response-is-null","errorCode":null,"errorMessage":"response is null!","messagePattern":"response is null!","errorType":"exception","errorClass":"TimeoutException","httpStatus":null,"severity":"error","filePath":"ArchiSteamFarm/Steam/Integration/ArchiHandler.cs","lineNumber":269,"sourceCode":"\t\t\t\t\t\tcase EResult.Fail:\n\t\t\t\t\t\tcase EResult.RemoteCallFailed:\n\t\t\t\t\t\tcase EResult.ServiceUnavailable:\n\t\t\t\t\t\tcase EResult.Timeout:\n\t\t\t\t\t\t\t// Expected failures that we should be able to retry\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tcase EResult.NoMatch:\n\t\t\t\t\t\t\t// Expected failures that we're not going to retry\n\t\t\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// Unknown failures, report them and do not retry since we're unsure if we should\n\t\t\t\t\t\t\tArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(response.Result), response.Result));\n\n\t\t\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (response == null) {\n\t\t\t\t\tthrow new TimeoutException(Strings.FormatErrorObjectIsNull(nameof(response)));\n\t\t\t\t}\n\n\t\t\t\tif (response.Result != EResult.OK) {\n\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t}\n\n\t\t\t\tif ((response.Body.total_inventory_count == 0) || (response.Body.assets.Count == 0)) {\n\t\t\t\t\t// Empty inventory\n\t\t\t\t\tyield break;\n\t\t\t\t}\n\n\t\t\t\tif (response.Body.descriptions.Count == 0) {\n\t\t\t\t\tthrow new InvalidOperationException(nameof(response.Body.descriptions));\n\t\t\t\t}\n\n\t\t\t\tif (response.Body.total_inventory_count > Array.MaxLength) {\n\t\t\t\t\tthrow new InvalidOperationException(nameof(response.Body.total_inventory_count));\n\t\t\t\t}","sourceCodeStart":251,"sourceCodeEnd":287,"githubUrl":"https://github.com/JustArchiNET/ArchiSteamFarm/blob/fe57c4129f4ce02d452318cabc525eb49a087255/ArchiSteamFarm/Steam/Integration/ArchiHandler.cs#L251-L287","documentation":"After the GetMyInventoryAsync retry loop exits, ASF asserts the response object is non-null. Because the loop continues on retryable errors and only assigns response on a service call, exiting the loop with no successful call leaves response null, which ASF converts to a TimeoutException with the message 'response is null!'.","triggerScenarios":"Every iteration of the retry loop hit a retryable error and exhausted MaxTries without ever receiving a usable response, or the GC callback never invoked the handler within the configured connection timeout.","commonSituations":"Steam GameCoordinator is degraded for an extended period; the connection timeout (ASF ConnectionTimeout) is too short for a slow GC reply; repeated RemoteCallFailed/ServiceUnavailable over all attempts.","solutions":["Increase ASF's ConnectionTimeout so the loop has more time/attempts.","Retry later when Steam GC service health improves.","Check whether the bot session is healthy (reconnect) before retrying.","Reduce concurrent inventory requests to lower GC load."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Increase the chance of a usable response within the loop.\nbyte timeout = ASF.GlobalConfig?.ConnectionTimeout ?? GlobalConfig.DefaultConnectionTimeout;\nif (timeout < 60) logger.LogWarning(\"ConnectionTimeout low; GC inventory may time out\");","typeGuard":null,"tryCatchPattern":"try { await foreach (var a in handler.GetMyInventoryAsync()) { /* ... */ } }\ncatch (TimeoutException ex) when (ex.Message.Contains(\"response is null\")) {\n    await Task.Delay(retryDelay); // retry once after GC recovers\n}","preventionTips":["Raise ConnectionTimeout for slow/unstable GC responses.","Throttle concurrent inventory requests to avoid GC overload.","Retry with backoff rather than immediately re-issuing."],"tags":["steam","inventory","gamecoordinator","timeout","network"],"backgroundTag":null,"analyzedSha":"fe57c4129f4ce02d452318cabc525eb49a087255","analyzedAt":"2026-08-13T17:26:20.146Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}