{{alias}}( x, y, done ) If a function does not return an error, invokes a callback with the function result; otherwise, invokes a second function `y`. A function `x` is provided a single argument: - clbk: callback to invoke upon function completion The callback function accepts any number of arguments, with the first argument reserved for providing an error. If the error argument is falsy, the function invokes a `done` callback with its first argument as `null` and all other provided arguments. If the error argument is truthy, the function invokes a function `y`. The number of arguments provided to `y` depends on the function's length. If `y` is a unary function, `y` is provided a single argument: - clbk: callback to invoke upon function completion Otherwise, `y` is provided two arguments: - error: the error from `x` - clbk: callback to invoke upon function completion The callback function accepts any number of arguments, with the first argument reserved for providing an error. If the error argument is falsy, the `done` callback is invoked with its first argument equal to `null` and all other arguments provided by `y`. If the error argument is truthy, the `done` callback is invoked with only the error argument provided by `y`. Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony, wrap the `done` callback in a function which either executes at the end of the current stack (e.g., `nextTick`) or during a subsequent turn of the event loop (e.g., `setImmediate`, `setTimeout`). Parameters ---------- x: Function Function to invoke. y: Function Function to invoke if `x` returns an error. done: Function Callback to invoke upon completion. Examples -------- > function x( clbk ) { ... setTimeout( onTimeout, 0 ); ... function onTimeout() { ... clbk( new Error( 'beep' ) ); ... } ... }; > function y( clbk ) { ... setTimeout( onTimeout, 0 ); ... function onTimeout() { ... clbk( null, 'boop' ); ... } ... }; > function done( error, result ) { ... if ( error ) { ... throw error; ... } ... console.log( result ); ... }; > {{alias}}( x, y, done ) 'boop' See Also --------