The Time Is Right For Functional Design Patterns
cs.uni.edu
cs.uni.edu
Where design patterns go wrong is in being a description of how to build a wheel (so you don't have to redsign the wheel) - what you really want is a wheel (so you don't have to rebuild the wheel).
My own RPC system enforces continuation passing style exclusively to unify the calling and return-value semantics. With this functional pattern in place it was pretty straight forward to transparently wrap arbitrarily many closures arbitrarily deeply in callback argument lists and method requests (which are the same thing under continuation passing style).