anchor.diff:                  {ok, Data} ->
                       get_headers(Socket, <<Buffer/binary, Data/binary>>,
                                   Headers, HeadersCount, Opts, Callback);
  -                {error, closed} ->
  +                {error, Closed} when Closed =:= closed orelse Closed =:= enotconn ->
                       handle_event(Mod, client_closed, [receiving_headers], Args),
                       elli_tcp:close(Socket),
                       exit(normal);
  
positive.code:                     case elli_tcp:recv(Socket, N, body_timeout(Opts)) of
                          {ok, Data} ->
                              {<<Buffer/binary, Data/binary>>, <<>>};
                          {error, closed} ->
                              handle_event(Mod, client_closed, [receiving_body], Args),
                              ok = elli_tcp:close(Socket),
                              exit(normal);
  
negative.code:                     elli_tcp:close(Socket),
                      From ! {self(), ok},
                      ok;
                  {error, Closed} when Closed =:= closed orelse Closed =:= enotconn ->
                      From ! {self(), {error, closed}},
                      ok
              end;
  