Check state before `send` and throw exception when not yet ready.

I decided to throw a Exception instead of returning `Failure` because the cause is likely a programming mistake and not something which should be handled at runtime.