The source I (and you also) linked contains this split. Since they need to be used in tandem anyways, they could be merged, but only if we keep one of the tryDrain / tryDrainAsync.