Currently, parameters handed in by the user via public API, are not validated. For example stream.to(null) would fail when the underlying producer gets instantiated. This result in a stack trace from deep down in the library, making it hard to reason about the problem for the user.
We want to check all given user parameters as early as possible and raise corresponding (and helpful!) exceptions to explain users what the problem is, and how to fix it. All parameter checks should get unit tested.