Why does `done` have to be called in the next tick?