I applaud people for trying to find clean ways to add chaining to langauges like JS, but feel we are working at the wrong level of abstraction. Chaining is a syntax and grammer problem, not a semantic problem. Smalltalk solved this by making chaining part of the syntax. if you write:<p><pre><code> foo
:bar;
:bash something;
:thenBlitz.
</code></pre>
The semi-colons tell the interpreter to chain the method calls to the original receiver. That way you can read the sntax and know chaining is involved without needing to know whether those methods were written to be chained. The return value of a method is its <i>semantics</i>, and should not be chosen to try to implement syntax.<p>Summary: This problem should be solved by the parser, not by the function author.<p>p.s. paging @jashkenas!<p>p.p.s. Did you ever take that test yourself? Yes, my comments apply doubly to libraries like #andand.