support for :async

solves the problem #1 when `:async` is throwed instead of returning [-1, ...]