If an MD5 can't be found on the source then this streams the object into memory or on disk to calculate it.