Upgraded so that it works with the new can.js async API.