* ignore final called before close, which make status will be unknown when close
* use error as send frame return
* lock in status change
- remove chan frame sender
* gather all setting in session.go
* use millisecond number as setting, not duration