Dataflow: a = b // Not bound until b has some value c = 3 // Bound right away print a // Prints whatever b is bound to, whenever b gets bound print c // Prints 3 right away b = 2 Output: 3 2 Why? Because the blocking occurs asynchronously. What if "function calls" worked like this (and variables are handled as in Common Lisp/Scheme)? Would this be too unweildy?