This has been a wonder of mine for a long time. Effects capture requirements, why don't they capture whether they need to run sync/async in the same way? It seems really odd that asynchrony is one of the few things left to runtime errors (running an async Effect with runSync fails at runtime, not in type checking)