@@ -1314,92 +1314,84 @@ impl EthereumAdapterTrait for EthereumAdapter {
13141314 . await
13151315 }
13161316
1317- fn load_block (
1317+ async fn load_block (
13181318 & self ,
13191319 logger : & Logger ,
13201320 block_hash : H256 ,
1321- ) -> Box < dyn Future < Item = LightEthereumBlock , Error = Error > + Send > {
1322- Box :: new (
1323- self . block_by_hash ( logger, block_hash)
1324- . and_then ( move |block_opt| {
1325- block_opt. ok_or_else ( move || {
1326- anyhow ! (
1327- "Ethereum node could not find block with hash {}" ,
1328- block_hash
1329- )
1330- } )
1331- } ) ,
1332- )
1321+ ) -> Result < LightEthereumBlock , Error > {
1322+ self . block_by_hash ( logger, block_hash)
1323+ . await ?
1324+ . ok_or_else ( move || {
1325+ anyhow ! (
1326+ "Ethereum node could not find block with hash {}" ,
1327+ block_hash
1328+ )
1329+ } )
13331330 }
13341331
1335- fn block_by_hash (
1332+ async fn block_by_hash (
13361333 & self ,
13371334 logger : & Logger ,
13381335 block_hash : H256 ,
1339- ) -> Box < dyn Future < Item = Option < LightEthereumBlock > , Error = Error > + Send > {
1336+ ) -> Result < Option < LightEthereumBlock > , Error > {
13401337 let web3 = self . web3 . clone ( ) ;
13411338 let logger = logger. clone ( ) ;
13421339 let retry_log_message = format ! (
13431340 "eth_getBlockByHash RPC call for block hash {:?}" ,
13441341 block_hash
13451342 ) ;
1346- Box :: new (
1347- retry ( retry_log_message, & logger)
1348- . redact_log_urls ( true )
1349- . limit ( ENV_VARS . request_retries )
1350- . timeout_secs ( ENV_VARS . json_rpc_timeout . as_secs ( ) )
1351- . run ( move || {
1352- Box :: pin ( web3. eth ( ) . block_with_txs ( BlockId :: Hash ( block_hash) ) )
1353- . compat ( )
1354- . from_err ( )
1355- . compat ( )
1356- } )
1357- . map_err ( move |e| {
1358- e. into_inner ( ) . unwrap_or_else ( move || {
1359- anyhow ! ( "Ethereum node took too long to return block {}" , block_hash)
1360- } )
1343+
1344+ retry ( retry_log_message, & logger)
1345+ . redact_log_urls ( true )
1346+ . limit ( ENV_VARS . request_retries )
1347+ . timeout_secs ( ENV_VARS . json_rpc_timeout . as_secs ( ) )
1348+ . run ( move || {
1349+ Box :: pin ( web3. eth ( ) . block_with_txs ( BlockId :: Hash ( block_hash) ) )
1350+ . compat ( )
1351+ . from_err ( )
1352+ . compat ( )
1353+ } )
1354+ . map_err ( move |e| {
1355+ e. into_inner ( ) . unwrap_or_else ( move || {
1356+ anyhow ! ( "Ethereum node took too long to return block {}" , block_hash)
13611357 } )
1362- . boxed ( )
1363- . compat ( ) ,
1364- )
1358+ } )
1359+ . await
13651360 }
13661361
1367- fn block_by_number (
1362+ async fn block_by_number (
13681363 & self ,
13691364 logger : & Logger ,
13701365 block_number : BlockNumber ,
1371- ) -> Box < dyn Future < Item = Option < LightEthereumBlock > , Error = Error > + Send > {
1366+ ) -> Result < Option < LightEthereumBlock > , Error > {
13721367 let web3 = self . web3 . clone ( ) ;
13731368 let logger = logger. clone ( ) ;
13741369 let retry_log_message = format ! (
13751370 "eth_getBlockByNumber RPC call for block number {}" ,
13761371 block_number
13771372 ) ;
1378- Box :: new (
1379- retry ( retry_log_message, & logger)
1380- . redact_log_urls ( true )
1381- . no_limit ( )
1382- . timeout_secs ( ENV_VARS . json_rpc_timeout . as_secs ( ) )
1383- . run ( move || {
1384- let web3 = web3. cheap_clone ( ) ;
1385- async move {
1386- web3. eth ( )
1387- . block_with_txs ( BlockId :: Number ( block_number. into ( ) ) )
1388- . await
1389- . map_err ( Error :: from)
1390- }
1391- } )
1392- . map_err ( move |e| {
1393- e. into_inner ( ) . unwrap_or_else ( move || {
1394- anyhow ! (
1395- "Ethereum node took too long to return block {}" ,
1396- block_number
1397- )
1398- } )
1373+ retry ( retry_log_message, & logger)
1374+ . redact_log_urls ( true )
1375+ . no_limit ( )
1376+ . timeout_secs ( ENV_VARS . json_rpc_timeout . as_secs ( ) )
1377+ . run ( move || {
1378+ let web3 = web3. cheap_clone ( ) ;
1379+ async move {
1380+ web3. eth ( )
1381+ . block_with_txs ( BlockId :: Number ( block_number. into ( ) ) )
1382+ . await
1383+ . map_err ( Error :: from)
1384+ }
1385+ } )
1386+ . map_err ( move |e| {
1387+ e. into_inner ( ) . unwrap_or_else ( move || {
1388+ anyhow ! (
1389+ "Ethereum node took too long to return block {}" ,
1390+ block_number
1391+ )
13991392 } )
1400- . boxed ( )
1401- . compat ( ) ,
1402- )
1393+ } )
1394+ . await
14031395 }
14041396
14051397 fn load_full_block (
0 commit comments