ideally, you should read directly into `scrach.bytes` instead of allocating a `byte[]`