To me the fundamental shortcoming for javascript is not its typelessness, it's the lack of language syntax support for asynchronous programming, which is the butter and bread for most javascript applications (server or client side). I really hope I can do something like for ( ra ).run()
So if you used Q or a similar library: Q.async(function*() { var ra = yield opA(); var rb = yield opB(ra); yield opC(ra, rb); })().done(); Are you wishing for the other syntax or something that you can't achieve with generators/promises today?
Here's your example rewritten in the 'monads' library (I probably need a better name):
monads(function() { var ra = opA.defer(); var rb = opB.defer(); var result = opC(ra(), rb()); });