I'm new to service bus and not able to figure this out.

Basically i'm using Azure function app which is hooked onto the service bus queue. Let's say a trigger is fired from the service bus and I receive a message from the queue, and in the processing of that message something goes wrong in my code. In such cases how do I make sure to put that message back in the queue again? Currently its just disappearing into thin air and when I restart my function app on VS, the next message from the queue is taken.

Ideally only when all my data processing is done and when i hit myMsg.Success() do I want it to be removed from the queue.

```
public static async Task RunAsync([ServiceBusTrigger("xx", "yy", AccessRights.Manage)]BrokeredMessage mySbMsg, TraceWriter log)
{
      try{ // do something with mySbMsg }

      catch{ // put that mySbMsg back in the queue so it doesn't disappear. and throw exception}
}

```

I was reading up on mySbMsg.Abandon() but it looks like that puts the message in the dead letter queue and I am not sure how to access it? and if there is a better way to error handle?