Thanks for the <p> fix - missed a closing bracket on the fiddle.
I'm even more confused now though. I can't see why moving the call to l.asOptionsC() inside the function-call makes a difference. Outside the function, the results (a simple array) should just be bound inside the function, shouldn't they?
Look for //HERE in update 4 and you can move the call inside/outside the function and see it failing/not.
Very odd.