What does the suspend keyword mean in Kotlin coroutines?
Hello everyone! I started learning coroutines in Kotlin, but I can't understand what the `suspend` keyword before a function does. I read the documentation, but the explanations are too abstract.\n\nHere's an example I'm trying to write:\n\n```kotlin\nfun fetchUserData(): String {\n Thread.sleep(2000) // simulating a long request\n return "User data loaded"\n}\n\nfun main() {\n println("Start")\n val result = fetchUserData()\n println(result)\n println("End")\n}\n```\n\nThis code works, but it blocks the main thread. I want to do the same with coroutines, but I don't understand why I need to write `suspend` and what it gives.\n\nI tried to write it like this:\n\n```kotlin\nsuspend fun fetchUserDataSuspend(): String {\n delay(2000)\n return "User data loaded"\n}\n\nfun main() {\n println("S