The hash function checks for the existence of a given callback function (4th function parameter), and has progress as a 3rd parameter. But it doesn't check if only 3 params are given. In that case it should assume that the 3rd parameter is the actual callback. This would make it compatible with bcrypt.