
{{alias}}( predicate, x, y, done )
    If a predicate function returns a truthy value, invokes `x`; otherwise,
    invokes `y`.

    The predicate function is provided a single argument:

    - clbk: callback to invoke upon predicate function completion

    The predicate function callback accepts two arguments:

    - error: error object
    - bool: condition used to determine whether to invoke `x` or `y`

    Both `x` and `y` are 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 `done` callback is invoked with its
    first argument as `null` and all other provided arguments.

    If the error argument is truthy, the `done` callback is invoked with only an
    error argument.

    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
    ----------
    predicate: Function
        Predicate function.

    x: Function
        Function to invoke if a condition is truthy.

    y: Function
        Function to invoke if a condition is falsy.

    done: Function
        Callback to invoke upon completion.

    Examples
    --------
    > function predicate( clbk ) {
    ...     setTimeout( onTimeout, 0 );
    ...     function onTimeout() {
    ...         clbk( null, false );
    ...     }
    ... };
    > function x( clbk ) {
    ...     setTimeout( onTimeout, 0 );
    ...     function onTimeout() {
    ...         clbk( null, 'beep' );
    ...     }
    ... };
    > function y( clbk ) {
    ...     setTimeout( onTimeout, 0 );
    ...     function onTimeout() {
    ...         clbk( null, 'boop' );
    ...     }
    ... };
    > function done( error, result ) {
    ...     if ( error ) {
    ...         throw error;
    ...     }
    ...     console.log( result );
    ... };
    > {{alias}}( predicate, x, y, done )
    'boop'

    See Also
    --------

