Implement "timeout" feature
Fix typo:
Math.float =>
Math.floor
Update mocked callback to accept error object as the first argument
Mocked callback should accept one or two arguments