@@ -39,7 +39,15 @@ export class WT extends Transport {
3939 this . opts . transportOptions [ this . name ]
4040 ) ;
4141
42- this . transport . closed . then ( ( ) => this . onClose ( ) ) ;
42+ this . transport . closed
43+ . then ( ( ) => {
44+ debug ( "transport closed gracefully" ) ;
45+ this . onClose ( ) ;
46+ } )
47+ . catch ( ( err ) => {
48+ debug ( "transport closed due to %s" , err ) ;
49+ this . onError ( "webtransport error" , err ) ;
50+ } ) ;
4351
4452 // note: we could have used async/await, but that would require some additional polyfills
4553 this . transport . ready . then ( ( ) => {
@@ -50,23 +58,28 @@ export class WT extends Transport {
5058 let binaryFlag ;
5159
5260 const read = ( ) => {
53- reader . read ( ) . then ( ( { done, value } ) => {
54- if ( done ) {
55- debug ( "session is closed" ) ;
56- return ;
57- }
58- debug ( "received chunk: %o" , value ) ;
59- if ( ! binaryFlag && value . byteLength === 1 && value [ 0 ] === 54 ) {
60- binaryFlag = true ;
61- } else {
62- // TODO expose binarytype
63- this . onPacket (
64- decodePacketFromBinary ( value , binaryFlag , "arraybuffer" )
65- ) ;
66- binaryFlag = false ;
67- }
68- read ( ) ;
69- } ) ;
61+ reader
62+ . read ( )
63+ . then ( ( { done, value } ) => {
64+ if ( done ) {
65+ debug ( "session is closed" ) ;
66+ return ;
67+ }
68+ debug ( "received chunk: %o" , value ) ;
69+ if ( ! binaryFlag && value . byteLength === 1 && value [ 0 ] === 54 ) {
70+ binaryFlag = true ;
71+ } else {
72+ // TODO expose binarytype
73+ this . onPacket (
74+ decodePacketFromBinary ( value , binaryFlag , "arraybuffer" )
75+ ) ;
76+ binaryFlag = false ;
77+ }
78+ read ( ) ;
79+ } )
80+ . catch ( ( err ) => {
81+ debug ( "an error occurred while reading: %s" , err ) ;
82+ } ) ;
7083 } ;
7184
7285 read ( ) ;
0 commit comments