have to make the callbacks fire on the next tick in order to avoid the dreaded “double resume” exception