Accurate error catching with coroutines?

After hearing that spawn(function() is considered bad practice and can cause issues, I’ve decided to change over to coroutines. However I’m finding it inconvenient for error catching:

image
I find that the error is stated to be on line 1, where as the error is actually on line 4.

But a method to catch where the error is would be to add a wait():
image
But of course, I do not wish to have a wait at the start since I want it to execute instantly.
Furthermore I find that catching an error int he coroutine stops further code, spawn(function() was very helpful for me as errors caught in the function did not stop the script and also told which line exactly the error was caught.

Is there anything I could do with coroutines which has the exact same behaviour as spawn(function() without using spawn itself due to it having a negative stigma behind?

That’s the downside of coroutines, they are a pain to debug. Try using a pcall and it should help.

After you finish debugging, remove them when you fix the error.

aren’t pcalls slower as a result?