two-operand cond conflicts with per-branch-operand cond
#8467 introduces multi-operand `lax.cond`. When given two operands, as in:

```python
def f(x):
  return lax.cond(x == 0, lax.add, lax.mul, x, y)
```

`cond` detects five total arguments and falls back to behavior that is backwards-compatible with the deprecated per-branch-operand `cond`. The latter accepts, in order: a predicate, true operand, true branch, false operand, and false branch. This results in an error:

```
TypeError: Value <function add ...> with type <class 'function'> is not a valid JAX type
```

One option is to rollback (or disallow) multi-operand cond for now, complete the deprecation of the previous cond, and roll forward (or re-enable) multi-operand cond.
diff --git a/jax/_src/lax/control_flow.py b/jax/_src/lax/control_flow.py
index 2f8c92981..1d75f4a97 100644
--- a/jax/_src/lax/control_flow.py
+++ b/jax/_src/lax/control_flow.py
@@ -788,7 +788,10 @@ def cond(*args, **kwargs):
   except TypeError:
     pass
   else:
-    return _cond_with_per_branch_args(*ba.args)
+    assert not ba.kwargs  # no catch-all **kwargs in _cond_with_per_branch
+    _, _, maybe_true_fun, _, maybe_false_fun = ba.args
+    if callable(maybe_true_fun) and callable(maybe_false_fun):
+      return _cond_with_per_branch_args(*ba.args)
 
   return _cond(*args, **kwargs)
 
diff --git a/tests/lax_control_flow_test.py b/tests/lax_control_flow_test.py
index 5a703d774..3a79710f8 100644
--- a/tests/lax_control_flow_test.py
+++ b/tests/lax_control_flow_test.py
@@ -599,8 +599,6 @@ class LaxControlFlowTest(jtu.JaxTestCase):
 
   def testCondTwoOperands(self):
     # see https://github.com/google/jax/issues/8469
-    self.skipTest("two-operand cond behavior is ambiguous (#8469)")
-
     add, mul = lax.add, lax.mul
 
     def fun(x):
['tests/lax_control_flow_test.py', 'jax/_src/lax/control_flow.py']