ReviewOS

also looking at this

craft-native/craft

fix(ios): report async pool exhaustion as busy

#267
Merged glennmichael123 wants to merge codex/ios-busy-error-code into main
19 files +53 -65

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

packages/zig/src/bridge_mobile_audiorec.zigmodified+1-1
Changes to packages/zig/src/bridge_mobile_audiorec.zig
@@ -148,7 +148,7 @@ pub const AudioRecordingBridge = struct {
148148 "startAudioRecording: no free reply slot; {d} native calls are already awaiting one",
149149 .{ios_async.max_in_flight},
150150 );
151 return BridgeError.NativeCallFailed;
151 return BridgeError.Busy;
152152 };
153153 errdefer ios_async.abandon(ticket);
154154 pending = ticket;
packages/zig/src/bridge_mobile_auth.zigmodified+1-1
Changes to packages/zig/src/bridge_mobile_auth.zig
@@ -142,7 +142,7 @@ pub const AuthBridge = struct {
142142 "authenticate: no free reply slot; {d} native calls are already awaiting one",
143143 .{ios_async.max_in_flight},
144144 );
145 return BridgeError.NativeCallFailed;
145 return BridgeError.Busy;
146146 };
147147 errdefer ios_async.abandon(ticket);
148148
packages/zig/src/bridge_mobile_auth_apple.zigmodified+1-1
Changes to packages/zig/src/bridge_mobile_auth_apple.zig
@@ -149,7 +149,7 @@ pub const AppleAuthBridge = struct {
149149
150150fn poolFull() BridgeError {
151151 std.log.warn("signInWithApple refused: all {d} async slots in flight", .{ios_async.max_in_flight});
152 return BridgeError.InvalidParameter;
152 return BridgeError.Busy;
153153}
154154
155155/// `@[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail]`, or null when
packages/zig/src/bridge_mobile_bluetooth.zigmodified+1-1
Changes to packages/zig/src/bridge_mobile_bluetooth.zig
@@ -196,7 +196,7 @@ pub const BluetoothBridge = struct {
196196 "startBluetoothScan: no free reply slot; {d} native calls are already awaiting one",
197197 .{ios_async.max_in_flight},
198198 );
199 return BridgeError.NativeCallFailed;
199 return BridgeError.Busy;
200200 };
201201 errdefer ios_async.abandon(ticket);
202202 pending = ticket;