async calls to JSFunctions are executed on one round trip (closes #12)
actually, first tests indicate that this is *slower* than the previous implementation