@Override
    protected void channelReadHttpObject(ChannelHandlerContext ctx, HttpObject msg) {
        switch (currentState) {
            case INITIAL:
                readInitialRequest((HttpRequest)msg);
                break;
            case WAITING_OUTBOUND_CONNECTION:
            case WAITING_ESTEBLISHED_RESPONSE:
                ReferenceCountUtil.retain(msg);
                missedChunks.add(msg);
                //we stop reading, when connecting to remote server
//                throw new IllegalStateException("Shouldn't happen");
                break;
            case READING_CONTENT:
                readNextContent(msg);
                break;
            case DISCONNECTED:
                //just ignore everything
                break;
        }
    }