use sinon spies to more simply test callback order