select() supports both pull and push operations