ZupIT/beagle

Error not handled on http request timeout

Closed this issue · 0 comments

Please provide all the information requested. Issues that do not follow this format are likely to stall.

Description

An example calling sendRequest without the backend(timeout error simulated) its not calling the onError event .

Might have something related with de DefaultHttpClient

Steps To Reproduce

Provide a detailed list of steps that reproduce the issue.

  1. Show a screen with a button with send request action and the onError callback implemented
  2. Turn down BFF
  3. Click the button to trigger sendRequest
  4. Wait for the timeout error
  5. The error is crashing on Dart
E/flutter (28248): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: SocketException: OS Error: Connection timed out, errno = 110, address = 10.0.2.2, port = 34632
E/flutter (28248): #0      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:677:35)
E/flutter (28248): #1      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1679:26)
E/flutter (28248): #2      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
E/flutter (28248): #3      Socket._startConnect (dart:io-patch/socket_patch.dart:1890:22)
E/flutter (28248): #4      Socket.startConnect (dart:io/socket.dart:738:21)
E/flutter (28248): #5      _ConnectionTarget.connect (dart:_http/http_impl.dart:2439:18)
E/flutter (28248): #6      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2805:12)
E/flutter (28248): #7      _HttpClient._getConnection (dart:_http/http_impl.dart:2810:12)
E/flutter (28248): #8      _HttpClient._openUrl (dart:_http/http_impl.dart:2694:12)
E/flutter (28248): #9      _HttpClient.openUrl (dart:_http/http_impl.dart:2568:7)
E/flutter (28248): #10     IOClient.send (package:http/src/io_client.dart:30:38)
E/flutter (28248): #11     BaseClient._sendUnstreamed (package:http/src/base_client.dart:93:38)
E/flutter (28248): #12     BaseClient.get (package:http/src/base_client.dart:27:7)
E/flutter (28248): #13     get.<anonymous closure> (package:http/http.dart:46:36)
E/flutter (28248): #14     _withClient (package:http/http.dart:164:20)
E/flutter (28248): #15     get (package:http/http.dart:46:5)
E/flutter (28248): #16     DefaultHttpClient.sendRequest.<anonymous closure> (package:beagle/src/default/default_http_client.dart:27:35)
E/flutter (28248): #17     DefaultHttpClient.sendRequest (package:beagle/src/default/default_http_client.dart:36:48)
E/flutter (28248): #18     BeagleServiceJS._registerHttpListener.<anonymous closure> (package:beagle/src/bridge_impl/beagle_service_js.dart:94:41)
E/flutter (28248): #19     BeagleServiceJS._registerHttpListener.<anonymous closure> (package:beagle/src/bridge_impl/beagle_service_js.dart:93:35)
E/flutter (28248): #20     BeagleJSEngine._notifyHttpListener (package:beagle/src/bridge_impl/beagle_js_engine.dart:151:18)
E/flutter (28248): #21     JavascriptCoreRuntime._sendMessage (package:flutter_js/javascriptcore/jscore_runtime.dart:183:38)
E/flutter (28248): #22     JavascriptCoreRuntime.sendMessageBridgeFunction (package:flutter_js/javascriptcore/jscore_runtime.dart:128:28)
E/flutter (28248): #23     _FfiCallbacksendMessageBridgeFunction (dart:ffi)
E/flutter (28248): #24     FfiTrampoline (dart:ffi)
E/flutter (28248): #25     JavascriptCoreRuntime.evaluate (package:flutter_js/javascriptcore/jscore_runtime.dart:67:38)
E/flutter (28248): #26     JavascriptRuntimeWrapper.evaluate (package:beagle/src/bridge_impl/js_runtime_wrapper.dart:25:23)
E/flutter (28248): #27     BeagleJSEngine._deserializeJsFunctions.<anonymous closure> (package:beagle/src/bridge_impl/beagle_js_engine.dart:97:20)
E/flutter (28248): #28     _BeaglePullToRefresh._onRefreshHandler (package:beagle_components/src/beagle_pull_to_refresh.dart:84:20)
E/flutter (28248): #29     BeagleRefreshIndicatorState._show.<anonymous closure> (package:beagle_components/src/internal/beagle_refresh_indicator.dart:382:60)
E/flutter (28248): #30     _rootRunUnary (dart:async/zone.dart:1436:47)
E/flutter (28248): #31     _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (28248): <asynchronous suspension>
E/flutter (28248): 

Expected Results

  1. Show a screen with a button with send request action and the onError callback implemented
  2. Turn down BFF
  3. Click the button to trigger sendRequest
  4. Wait for the timeout error
  5. The onError callback should be called

Code example, screenshot, or link to a repository:

SendRequest(
                            url = "/generate-string-list",
                            onSuccess = listOf(
                                SetContext(
                                    contextId = "refreshContext",
                                    value = false
                                )                               
                            ),
                            onError = listOf(SetContext(
                                contextId = "refreshContext",
                                value = false
                            ))
                        )

Please provide a link to a repository on GitHub, or provide a minimal code example that reproduces the problem.
You may provide a screenshot of the application if you think it is relevant to your bug report.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve