fix
diff --git a/libraries/stdlib/wasm/internal/kotlin/wasm/internal/Coroutines.kt b/libraries/stdlib/wasm/internal/kotlin/wasm/internal/Coroutines.kt
index 74a680b..e70ee8a 100644
--- a/libraries/stdlib/wasm/internal/kotlin/wasm/internal/Coroutines.kt
+++ b/libraries/stdlib/wasm/internal/kotlin/wasm/internal/Coroutines.kt
@@ -61,7 +61,7 @@
         require(!isResumed) { "WasmContinuation can be resumed only once" }
         isResumed = true
         val resumeValue = if (isFreshInstance && exception == null) {
-            require(result == Unit || result == resultContinuation)
+            require(result == Unit || result == resultContinuation) { "Result of the continuation must be Unit or the continuation itself" }
             isFreshInstance = false
             resultContinuation
         } else result
@@ -69,7 +69,9 @@
             resumeThrowImpl(it, wasmContBox.cont!!)
         } ?: resumeWithImpl(wasmContBox.cont!!, resumeValue)
         if (resumeResult.cont != null) {
+            resumeResult.cont.synthetic = false
             wasmContBox = resumeResult.cont.wasmContBox
+            isResumed = false
             return COROUTINE_SUSPENDED
         } else {
             return resumeResult.result
@@ -136,6 +138,7 @@
 internal suspend fun <T> suspendCoroutineUninterceptedOrReturnImpl(block: (Continuation<T>) -> Any?): T {
     val completion = getContinuation<Any?>()
     val wasmCont = WasmContinuation<T, Any?>(WasmContinuationBox(nullable_contref_intrinsic()), completion, synthetic = true)
+    wasmCont.isFreshInstance = false
     val result = block(wasmCont)
     if (result === COROUTINE_SUSPENDED) {
         completion.context[SuspensionMarker]?.wasSuspended = true