move to buf-or-n for internal chans, always close with source