`setImmediate()` is to be used if & only if the function itself is not invoked using an async method (setImmediate or a built-in async function such as `fs.readFile()`.

```javascript
function doSomethingSync(next) {
    // work...
    setImmediate(next);
}
```

and:

```javascript
function doSomethingAsync(next) {
    someAsyncFunc(param, function(err, next) {
        // work...
        next(err);
    });
    someSyncFunc(param, function(err, next) {
        // work...
        setImmediate(next, err);
    });
    // work...
    setImmediate(next);
}
```

More next Thursday...