The following code compiles without error using core.async 0.3.442:
`
(go-loop []
(when true
(recur))
1)
`
The same loop structure without core.async causes the compiler to error ("ERROR: Can't recur here at..."):
`
(loop []
(when true
(recur))
1)
`
Interestingly, some non-tail-recursive loops correctly fail to compile. For example the following fails with "ERROR: No implementation of method: :emit-instruction...":
`
(go-loop []
(do
(recur)
1))
`