suspend fun drain(collector: FlowCollector<T>, onCrash: (BufferingResumableCollector<T>) -> Unit = null): Unit