@Override
 public void onFillable() {
   HttpExchange exchange = channel.getHttpExchange();
   if (exchange != null) {
     channel.receive();
   } else {
     // If there is no exchange, then could be either a remote close,
     // or garbage bytes; in both cases we close the connection
     close();
   }
 }
 protected boolean abort(Throwable failure) {
   HttpExchange exchange = channel.getHttpExchange();
   return exchange != null && exchange.getRequest().abort(failure);
 }
 @Override
 public ByteBuffer onUpgradeFrom() {
   HttpReceiverOverHTTP receiver = channel.getHttpReceiver();
   return receiver.onUpgradeFrom();
 }