Easy to use
First and foremost the API should be easy to use. It has to feel natural and behave as expected. Everything should work out of the box without any configuration. No worries about thread pools like shutting them down. Still, everything should be flexible enough to adjust Kovenant to specific needs.
Of course not counting the Kotlin standard runtime, Kovenant should be completely free of dependencies. This makes it easy to incorporate Kovenant in your projects. Though make sure that necessary hooks are provided so that Kovenant can be connected to existing services. So loggers and existing thread pools should easily be connected.
Try to reduce the overhead as much as possible because I want Kovenant to be a viable alternative to sequential and existing concurrency approaches.
Platform Specific Goals
Thread safety is of course an implied requirement, but furthermore for any platform allowing non blocking concurrency everything should be non blocking. Non blocking algorithms generally perform better where lock contention is to be expected. Please refer to Performance for more on the subject.