Reminds me of node-chainsaw: https://github.com/substack/node-chainsaw
Also, my own node-ContextChain https://github.com/duncanbeevers/node-ContextChain
Both of these libraries take the approach of wrapping the underlying object rather than modifying it.