Listener interface for events that are run at the completion of a request/response cycle (i.e. when the request has been completely read, and the response has been fully written). At this point it is too late to modify the exchange further. Implementations are required invoke
ExchangeCompletionListener.NextListener.proceed()
to allow other listeners to release resources, even in failure scenarios. This chain allows transfer of request ownership between listeners in order to complete using non-blocking mechanisms, and must not be used to conditionally proceed. Completion listeners are invoked in reverse order.