Oh, btw, i remembered. It needed :) 

Thing is that io.Reader interface says that `Read` function should received slice as argument and write to it. 

If i just do `data = buf` it will rewrite original `data` pointer, and original `data` still be empty. Thats why we use copy.