That'd mess with the subsequent else, wouldn't it?
Yes, exactly. Part of what makes this hard to read is that the "else if" has to be changed; the change I suggested would avoid that.
Though I do agree that's a difficult line. Maybe something like `if (async->data.apc && (!async->blocking || !async->canceled))`?
I dunno if that's an improvement.