anchor.diff:      ),
   
       %% then
  -    ?assertReceivedMatch({on_complete, {error, test_error}}, ?TIMEOUT).
  +    ?assertReceivedMatch({on_complete, {error,{other,{send_error,normal}}}}, ?TIMEOUT).
   
   error_read_fun_test(Config) ->
       %% test with read_fun callback returning an error
       [Worker1, Worker2 | _] = ?config(op_worker_nodes, Config),
   
       %% given
  -    DataSize = 1024 * ?TEST_BLOCK_SIZE,
  +    DataSize = ?TEST_BLOCK_SIZE,
       WriteFunOpt = make_opt_fun(write_fun, {ok, ?FILE_HANDLE2, DataSize}),
       ReadFunOpt = make_opt_fun(read_fun, {error, ?FILE_HANDLE2, test_error}),
       RtransferOpts1 = [ReadFunOpt, WriteFunOpt, get_binding(Worker1) | ?DEFAULT_RTRANSFER_OPTS],
  
positive.code:             [Ref1, notify_fun(), on_complete_fun(self())]
          )
      ),
      %% then
      %% TODO check what should be the reply
      ?assertReceivedMatch({on_complete, {error, test_error}}, ?TIMEOUT).
  
  %%%===================================================================
  %%% SetUp and TearDown functions
  
negative.code:     [
          remote_apply(Worker1, rtransfer, prepare_request,
              [Worker2, ?TEST_FILE_UUID, I, Chunk / 2])
          || I <- lists:seq(0, RequestsNum - 2, 2)
      ].
  
  fetch_many(Refs, Worker1, Notify, OnComplete) ->
  