@@ -39,7 +39,15 @@ export class WT extends Transport {
39
39
this . opts . transportOptions [ this . name ]
40
40
) ;
41
41
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
+ } ) ;
43
51
44
52
// note: we could have used async/await, but that would require some additional polyfills
45
53
this . transport . ready . then ( ( ) => {
@@ -50,23 +58,28 @@ export class WT extends Transport {
50
58
let binaryFlag ;
51
59
52
60
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
+ } ) ;
70
83
} ;
71
84
72
85
read ( ) ;
0 commit comments