servicetalk-grpc-utils/src/main/java/io/servicetalk/grpc/utils/LoggingGrpcLifecycleObserver.java [150:181]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        @Override
        public void onResponseComplete() {
            assert responseResult == null;
            assert responseMetaData != null;
            responseTimeMs = durationMs(startTime);
            responseResult = Result.complete;
        }

        @Override
        public void onResponseError(final Throwable cause) {
            assert responseResult == null;
            responseTimeMs = durationMs(startTime);
            responseResult = cause;
        }

        @Override
        public void onResponseCancel() {
            assert responseResult == null;
            responseTimeMs = durationMs(startTime);
            responseResult = Result.cancelled;
        }

        @Override
        public void onExchangeFinally() {
            // request info always expected to be available:
            final HttpRequestMetaData requestMetaData = this.requestMetaData;
            assert requestMetaData != null;
            final HttpResponseMetaData responseMetaData = this.responseMetaData;
            Object requestResult = unwrapResult(this.requestResult);
            if (requestResult == null) {
                // It's possible that request can be cancelled before transport subscribed to its payload body
                requestResult = Result.cancelled;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



servicetalk-http-utils/src/main/java/io/servicetalk/http/utils/LoggingHttpLifecycleObserver.java [140:171]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        @Override
        public void onResponseComplete() {
            assert responseResult == null;
            assert responseMetaData != null;
            responseTimeMs = durationMs(startTime);
            responseResult = Result.complete;
        }

        @Override
        public void onResponseError(final Throwable cause) {
            assert responseResult == null;
            responseTimeMs = durationMs(startTime);
            responseResult = cause;
        }

        @Override
        public void onResponseCancel() {
            assert responseResult == null;
            responseTimeMs = durationMs(startTime);
            responseResult = Result.cancelled;
        }

        @Override
        public void onExchangeFinally() {
            // request info always expected to be available:
            final HttpRequestMetaData requestMetaData = this.requestMetaData;
            assert requestMetaData != null;
            final HttpResponseMetaData responseMetaData = this.responseMetaData;
            Object requestResult = unwrapResult(this.requestResult);
            if (requestResult == null) {
                // It's possible that request can be cancelled before transport subscribed to its payload body
                requestResult = Result.cancelled;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



