Commit 874de112 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

handle rejected promises; do not accidentally duplicate rejections

parent eb93ee40
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -1260,6 +1260,13 @@ sub startup {
								{ user_id     => $uid }
							);
						}
						return;
					}
				)->catch(
					sub {
						my ($err) = @_;
						$self->app->log->warn("add_route_timestamps: $err");
						return;
					}
				)->wait;
			}
@@ -1394,6 +1401,11 @@ sub startup {
						{ user_id => $uid }
					);
				}
			)->catch(
				sub {
					my ($err) = @_;
					$self->app->log->warn("add_route_timestamps: $err");
				}
			)->wait;

			if ( $train->sched_departure ) {
@@ -1476,6 +1488,11 @@ sub startup {
							);
						}
					}
				)->catch(
					sub {
						# no wagonorder? no problem.
						return;
					}
				)->wait;
			}

@@ -1497,6 +1514,11 @@ sub startup {
							{ user_id => $uid }
						);
					}
				)->catch(
					sub {
						# no stationinfo? no problem.
						return;
					}
				)->wait;
			}

@@ -1518,6 +1540,11 @@ sub startup {
							{ user_id => $uid }
						);
					}
				)->catch(
					sub {
						# no stationinfo? no problem.
						return;
					}
				)->wait;
			}
		}
+13 −9
Original line number Diff line number Diff line
@@ -32,12 +32,10 @@ sub has_wagonorder_p {

	if ( my $content = $cache->get($url) ) {
		if ( $content eq 'y' ) {
			$promise->resolve;
			return $promise;
			return $promise->resolve;
		}
		elsif ( $content eq 'n' ) {
			$promise->reject;
			return $promise;
			return $promise->reject;
		}
	}

@@ -53,11 +51,13 @@ sub has_wagonorder_p {
				$cache->set( $url, 'n' );
				$promise->reject;
			}
			return;
		}
	)->catch(
		sub {
			$cache->set( $url, 'n' );
			$promise->reject;
			return;
		}
	)->wait;
	return $promise;
@@ -86,11 +86,13 @@ sub get_wagonorder_p {
			my $json = JSON->new->decode($body);
			$cache->freeze( $url, $json );
			$promise->resolve($json);
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$promise->reject($err);
			return;
		}
	)->wait;
	return $promise;
@@ -105,8 +107,7 @@ sub get_stationinfo_p {
	my $promise = Mojo::Promise->new;

	if ( my $content = $cache->thaw($url) ) {
		$promise->resolve($content);
		return $promise;
		return $promise->resolve($content);
	}

	$self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} )
@@ -115,17 +116,20 @@ sub get_stationinfo_p {
			my ($tx) = @_;

			if ( my $err = $tx->error ) {
				return $promise->reject("HTTP $err->{code} $err->{message}");
				$promise->reject("HTTP $err->{code} $err->{message}");
				return;
			}

			my $json = $tx->result->json;
			$cache->freeze( $url, $json );
			return $promise->resolve($json);
			$promise->resolve($json);
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			return $promise->reject($err);
			$promise->reject($err);
			return;
		}
	)->wait;
	return $promise;
+14 −8
Original line number Diff line number Diff line
@@ -34,8 +34,7 @@ sub get_polyline_p {
	my $version = $self->{version};

	if ( my $content = $cache->thaw($url) ) {
		$promise->resolve($content);
		return $promise;
		return $promise->resolve($content);
	}

	$self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} )
@@ -97,11 +96,13 @@ sub get_polyline_p {
			else {
				$promise->resolve($ret);
			}
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$promise->reject($err);
			return;
		}
	)->wait;

@@ -144,11 +145,13 @@ sub get_tripid_p {
				}
			}
			$promise->reject;
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$promise->reject($err);
			return;
		}
	)->wait;

@@ -162,8 +165,7 @@ sub get_rest_p {
	my $promise = Mojo::Promise->new;

	if ( my $content = $cache->thaw($url) ) {
		$promise->resolve($content);
		return $promise;
		return $promise->resolve($content);
	}

	$self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} )
@@ -180,12 +182,14 @@ sub get_rest_p {
			my $json = JSON->new->decode( $tx->res->body );
			$cache->freeze( $url, $json );
			$promise->resolve($json);
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$self->{log}->warn("get($url): $err");
			$promise->reject($err);
			return;
		}
	)->wait;
	return $promise;
@@ -198,8 +202,7 @@ sub get_json_p {
	my $promise = Mojo::Promise->new;

	if ( my $content = $cache->thaw($url) ) {
		$promise->resolve($content);
		return $promise;
		return $promise->resolve($content);
	}

	$self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} )
@@ -222,12 +225,14 @@ sub get_json_p {
			my $json = JSON->new->decode($body);
			$cache->freeze( $url, $json );
			$promise->resolve($json);
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$self->{log}->warn("get($url): $err");
			$promise->reject($err);
			return;
		}
	)->wait;
	return $promise;
@@ -240,8 +245,7 @@ sub get_xml_p {
	my $promise = Mojo::Promise->new;

	if ( my $content = $cache->thaw($url) ) {
		$promise->resolve($content);
		return $promise;
		return $promise->resolve($content);
	}

	$self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} )
@@ -303,12 +307,14 @@ sub get_xml_p {

			$cache->freeze( $url, $traininfo );
			$promise->resolve($traininfo);
			return;
		}
	)->catch(
		sub {
			my ($err) = @_;
			$self->{log}->warn("get($url): $err");
			$promise->reject($err);
			return;
		}
	)->wait;
	return $promise;