/**
         * Returns headers and/or body of the last request.
         */
        private Value getReturnValue(Env env, bool isPrintData)
        {
            StringValue data;

            if (_responseCode == HttpURLConnection.HTTP_NOT_MODIFIED ||
                _responseCode == HttpURLConnection.HTTP_PRECON_FAILED ||
                (_failOnError && _responseCode >= 400))
            {
                if (_isReturningHeader)
                {
                    data = _header;
                }
                else
                {
                    return(BooleanValue.TRUE);
                }
            }
            else
            {
                StringValue bb = env.createBinaryBuilder();

                if (_isReturningHeader)
                {
                    bb.append(_header);
                }

                if (_isReturningBody)
                {
                    bb.append(_body);
                }

                data = bb;
            }

            if (_outputHeaderFile != null)
            {
                FileModule.fwrite(env,
                                  _outputHeaderFile,
                                  _header.toInputStream(),
                                  Integer.MAX_VALUE);
            }

            if (_outputFile != null)
            {
                FileModule.fwrite(env,
                                  _outputFile,
                                  data.toInputStream(),
                                  Integer.MAX_VALUE);
            }

            if (_isReturningData)
            {
                _returnTransfer = data;

                return(data);
            }
            else
            {
                if (isPrintData)
                {
                    env.print(data);
                }

                return(BooleanValue.TRUE);
            }
        }