diff --git a/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java b/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java index 0161865..894c302 100644 --- a/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java +++ b/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java @@ -85,13 +85,15 @@ public static Object parseBytes(BArray json, BMap options, BTyp public static Object parseStream(Environment env, BStream json, BMap options, BTypedesc typed) { final BObject iteratorObj = json.getIteratorObj(); - BallerinaByteBlockInputStream byteBlockSteam = new BallerinaByteBlockInputStream(env, - iteratorObj, resolveNextMethod(iteratorObj), resolveCloseMethod(iteratorObj)); - Object result = JsonParser.parse(new InputStreamReader(byteBlockSteam), options, typed); - if (byteBlockSteam.getError() != null) { - return byteBlockSteam.getError(); - } - return result; + return env.yieldAndRun(() -> { + BallerinaByteBlockInputStream byteBlockSteam = new BallerinaByteBlockInputStream(env, iteratorObj, + resolveNextMethod(iteratorObj), resolveCloseMethod(iteratorObj)); + Object result = JsonParser.parse(new InputStreamReader(byteBlockSteam), options, typed); + if (byteBlockSteam.getError() != null) { + return byteBlockSteam.getError(); + } + return result; + }); } public static Object toJson(Object value) {