anchor.diff:  			%% We may need to send an alarm for each of the streams sending data.
   			lists:foldl(
   				fun({StreamID, _, _}, S) -> maybe_send_data_alarm(S, HTTP2Machine0, StreamID) end,
  -				send_data(maybe_ack(State#state{http2_machine=HTTP2Machine}, Frame), SendData),
  +				send_data(maybe_ack(State#state{http2_machine=HTTP2Machine}, Frame), SendData, []),
   				SendData);
   		{error, {stream_error, StreamID, Reason, Human}, HTTP2Machine} ->
   			reset_stream(State#state{http2_machine=HTTP2Machine},
  
positive.code: 	commands(State, StreamID, Tail);
  %% Send a response body chunk.
  commands(State0, StreamID, [{data, IsFin, Data}|Tail]) ->
  	State = maybe_send_data(State0, StreamID, IsFin, Data),
  	commands(State, StreamID, Tail);
  %% Send trailers.
  commands(State0, StreamID, [{trailers, Trailers}|Tail]) ->
  	State = maybe_send_data(State0, StreamID, fin, {trailers, maps:to_list(Trailers)}),
  	commands(State, StreamID, Tail);
  %% Send a push promise.
  %%
  
negative.code: 			State = send_headers(State0, StreamID, fin, StatusCode, Headers),
  			maybe_terminate_stream(State, StreamID, fin);
  		_ ->
  			%% @todo Add a test for HEAD to make sure we don't send the body when
  			%% returning {response...} from a stream handler (or {headers...} then {data...}).
  			{ok, _IsFin, HeaderBlock, HTTP2Machine}
  				= cow_http2_machine:prepare_headers(StreamID, HTTP2Machine0, nofin,
  					#{status => cow_http:status_to_integer(StatusCode)},
  					headers_to_list(Headers)),
  			maybe_send_data(State0#state{http2_machine=HTTP2Machine}, StreamID, fin, Body,
  				[cow_http2:headers(StreamID, nofin, HeaderBlock)])
  	end.
  
  send_headers(State=#state{socket=Socket, transport=Transport,
  