да, такой вот апи. переиспользование $cv не предполагается. я не смог придумать сходу почему нет какого-то reset() для него, просто смирился. возможно, ему для чего-то нужен именно деструктор там.
Норм API. Если хочется микрооптимизировать, то welcome в callback hell. Я когда смотрел перловые промисы, ужасался - почти везде есть разные set_xx . Потом же не распрямишь, если кто-то ошибётся при использовании этой императивщины.