It's a method of the macro execution context API. It's not documented there, because it's of strictly limited use—and, frankly, I don't trust most developers to use it properly.
It creates a callback wrapper around the given parameters, which are themselves callbacks, that shadows variables, as necessary, for its first callback parameter. It's what allows the <<widget>> $args array and the variables captured by the <<capture>> macro to work within asynchronous code—e.g. the contents of a <<link>> macro are executed asynchronously, whenever a player clicks on its link.
The method's prototype looks something like the following:
shadowedCallback, // Called with variables shadowed, if set up.
optionalDoneCallback, // Optional. Called at the end.
optionalStartCallback // Optional. Called at the beginning.
SEE: <MacroContext>.createShadowWrapper() → src/macros/macrocontext.js (line:165)