add drain port
implement doAsync logic
add test for DRAIN port