Works by:
- suspending the thread via an instance function that yields or via task.wait
- resuming the thread via coroutine.resume
Highlights:
- hides return values from hooks
- breaks those that "bypass" it (example: Simple Spy)
- works on any instance function that yields
- calling those functions will return the return values of the previous yield
- probably has other uses, i couldnt be bothered to explore