Suspending the process (using the API) from within the same process will cause issues I think. Is it important that the process-instance is actually suspended? Or is it enough that the process is just "waiting" until a certain point in time/timout is reached to continue. If the latter is the case, you can use an intermediate timer event. This will keep your process waiting until the timer fires and continues the process. Check the user guide for details.
If you're really keen on getting the process-instance suspend, you can always try by getting the EngineService form the delegateExecution, using DelegateExecution#getProcessInstanceId() to pass on to the suspendProcessInstance(), with some luck it will work fine.