implement blocking read/take #1