yes, this will execute incorrectly. the only reason it's ok for us to use a loop above is that we're using sync methods so far in this loop. mixing loops and async doesn't really work. for async you want something more like this:

```js
var myObjs; // a list of things
var performNextOperation = function () {
  var objToPlayWith = myObjs.pop();
  if (typeof objToPlayWith === "undefined") {
    // we have an empty list, so we're done
    cb();
  } else {
    someAsyncMethod(objToPlayWith, function (err) {
      if (err) return cb(err); // fail on the first error we come across; note if we return cb here, we never "loop" again
      performNextOperation();  // otherwise if we don't have an error, "loop" again
    });
  }
};
performNextOperation(); // kick off the loop
```