refactored to permit use with user-supplied asynchronous SHA256 function
async SHA256: tests and doc