initial websocket implementation. Will pass errors down to callbacks.
make runtime callbacks have err arguments. Pass errs to callbacks