code: public void sendTaskEvent(ResultPartitionID partitionId, TaskEvent event, final RemoteInputChannel inputChannel) throws IOException {
  		checkNotClosed();
  
  		tcpChannel.writeAndFlush(new TaskEventRequest(event, partitionId, inputChannel.getInputChannelId()))
  				.addListener(
  						new ChannelFutureListener() {
  							@Override
  							public void operationComplete(ChannelFuture future) throws Exception {
  								if (!future.isSuccess()) {
  									SocketAddress remoteAddr = future.channel().remoteAddress();
  									inputChannel.onError(new LocalTransportException(
  										String.format("Sending the task event to '%s' failed.", remoteAddr),
  										future.channel().localAddress(), future.cause()
  									));
  								}
  							}
  						});
  	}
docs: Sends a task event backwards to an intermediate result partition producer.
  <p>
  Backwards task events flow between readers and writers and therefore
  will only work when both are running at the same time, which is only
  guaranteed to be the case when both the respective producer and
  consumer task run pipelined.