{{alias}}( x, y, done ) If a function does not return an error, invokes a callback with the function result; otherwise, invokes a callback with a value `y`. A function `x` is provided a single argument: - clbk: callback to invoke upon function completion The callback function accepts two arguments: - error: error object - result: function result The `done` callback is invoked upon function completion and is provided two arguments: - error: error object - result: either the result of `x` or the provided argument `y` If `x` invokes `clbk` with an error argument, the function invokes the `done` callback with both the error and the argument `y`. If `x` does not invoke `clbk` with an error argument, the function invokes the `done` callback with a first argument equal to `null` and the function `result`. 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: any Value to return 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 done( error, result ) { ... if ( error ) { ... // process error... ... } ... console.log( result ); ... }; > {{alias}}( x, 'boop', done ) 'boop' See Also --------